2013-12-21 104 views
0

我的程序沒有編譯和展示我這個錯誤:引發異常錯誤

System.out.println("Error: "+ e.getMessage()); 

Scanner scanner = new Scanner(System.in); 
try { 
    int num = scanner.nextInt(); 
    if (num != 0) { 
     throw new Exception("Not zero"); 
    } 
    System.out.println("I'm happy with the input."); 
} catch (InputMismatchException e) //InputMismatchException is never thrown in body of corresponding try statement 

{ 
    System.out.println("Invalid Entry"); 
} catch (Exception e) { 
    System.out.println("Error: "+ e.getMessage()); 
} 
+1

它爲我編譯。另外,你發佈的內容不是錯誤。 –

+2

從編譯器發佈確切且完整的錯誤消息。 –

+0

你有進口的一切嗎? – skiwi

回答

3

的錯誤信息是很清楚的:

InputMismatchException is never thrown in body of corresponding try statement

你想抓住它不能保證一個異常從try塊中拋出。這是無用的,甚至是無效的。刪除catch (InputMismatchException e)塊。

實際上,try塊可以拋出一個java.util.InputMismatchException。所以我猜你實際上正在捕獲另一個包的InputMismatchException。檢查您的進口,並確保您導入java.util.InputMismatchException而不是其他com.foo.bar.InputMismatchException

編輯:

錯誤消息證實了我的想法。您正在捕獲javaapplication9.InputMismatchException,而不是java.util.InputMismatchException。我不知道爲什麼你定義了你自己的InputMismatchException。