我尝试了一个简单的代码,用户必须输入一个数字。如果用户输入char,则会生成numberformatexecption。这很好。现在,当我删除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());
//}
}
}
为什么会出现此错误?
答案 0 :(得分:4)
错误的含义是您的应用程序未捕获尝试从输入流中读取字符时可能引发的IOException。 IOException是一个经过检查的异常,Java坚持认为必须在封闭方法的签名中捕获或声明已检查的异常。
要么放回try ... catch
内容,要么通过添加main
来更改throws IOException
方法的签名。
答案 1 :(得分:1)
readLine()
抛出IOException
这是已检查的异常,这意味着它必须被捕获,或者必须声明方法才能抛出它。只需将声明添加到主方法:
public static void main(String[] args) throws IOException
您也可以将其声明为throws Exception
- 适用于玩具/学习计划。
答案 2 :(得分:1)
该行:
a=Integer.parseInt(br.readLine());
将抛出IOException,因为br.readLine()会抛出此异常。 Java将强制您明确地捕获异常,就像您的注释代码块一样,或者您的方法必须明确地抛出此异常,如:
public static void main(String[] args) throws IOException