未报告的异常处理

问题描述:

我尝试了一个简单的代码,用户必须输入一个数字。如果用户输入一个字符,它会产生数字形式。这工作正常。现在,当我删除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

错误的含义是,当您尝试从输入流中读取字符时,您的应用程序未捕获到可能抛出的IOException。 IOException是一个检查的异常,Java坚持检查异常必须在封闭方法的签名中被捕获或声明。

要么将​​try ... catch填满,要么通过添加throws IOException来更改main方法的签名。

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

行:

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

将抛出IOException,因为br.readLine()抛出此异常。 Java会迫使你明确地捕获异常,就像你的注释代码块一样,或者你的方法必须明确地抛出这个异常:

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