2010-10-26 195 views
0

我嘗試了一個簡單的代碼,用戶必須輸入一個數字。如果用戶輸入一個字符,它會產生數字形式。這工作正常。現在,當我刪除try catch塊時,它顯示錯誤。錯誤的含義代碼和錯誤如下未報告的異常處理

import java.io.*; 
class execmain 
{ 
    public static void main(String[] args) 
    { 
     //try 
     //{ 
      int a; 
      BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
      a=Integer.parseInt(br.readLine());// ---------error-unreported exception must be caught/declared to be thrown 
      System.out.println(a); 
     //} 
     //catch(IOException e) 
     //{ 
     //System.out.println(e.getMessage()); 
     //} 
    } 
} 

爲什麼會出現這個錯誤?

+1

嗨。當您發佈代碼時,您可以使用帶有零和一個按鈕的按鈕來應用代碼格式。 – 2010-10-26 07:47:09

回答

4

錯誤的含義是,當您嘗試從輸入流中讀取字符時,您的應用程序未捕獲到可能拋出的IOException。 IOException是一個檢查的異常,Java堅持檢查異常必須在封閉方法的簽名中被捕獲或聲明。

要麼將​​try ... catch填滿,要麼通過添加throws IOException來更改main方法的簽名。

1

readLine()拋出IOException其是檢查的異常,這意味着它必須河北要麼抓住,或者必須聲明的方法,把它扔到。只需將聲明添加到您的主要方法:

public static void main(String[] args) throws IOException 

你也可以把它聲明爲throws Exception - 玩具/學習計劃,這只是罰款。

+0

NumberFormatException是一個未經檢查的異常! – flash 2010-10-26 07:54:58

+0

不應該有任何負面的。來吧,它發生了。你們有時會像學校考官一樣行事。 +1來反擊它。 – 2010-10-26 08:01:40

+0

@Adeel Ansari同意! Downvote對此有點太難了。 – flash 2010-10-26 08:03:02

1

行:

a=Integer.parseInt(br.readLine()); 

將拋出IOException,因爲br.readLine()拋出此異常。 Java會迫使你明確地捕獲異常,就像你的註釋代碼塊一樣,或者你的方法必須明確地拋出這個異常:

public static void main(String[] args) throws IOException