2016-02-18 52 views
0

我想从System.in中得到一个整数,并且想要捕获最终的错误。这是代码:捕捉异常时无限循环

int dim; 
boolean done = false; 

while(!done) 
    { 
    try 
    { 
     dim = in.nextInt(); 
     done=true; 
    } 
    catch(InputMismatchException e) 
    { 
     System.out.println("I need an integer"); 
    } 
    } 

我得到的结果是错误字符串的无限循环。我做错了什么?我想抓住错误的例外吗?

+0

你说得对,我在匆忙复制代码后添加了布尔值,当然当声明为false时。 –

+0

为什么try块不被重复呢? –

+0

您是否设置了扫描仪?如果您确实请将其包含在代码中。 – YounesM

回答

2

“当扫描器抛出InputMismatchException时,扫描器不会传递导致该异常的令牌,以便通过其他方法检索或跳过该令牌。” Oracle

+0

谢谢法拉兹! (在这种情况下,我为Scanner.next()创建了一个字符串,然后解析为一个整数,将catch更改为适当的异常)。 –