try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str = br.readLine();
i = Integer.parseInt(str);
} catch(NumberFormatException e) {
System.out.Println("enter a valid input");
}
当我尝试编译这段代码时,它会抛出一个编译错误,ioexception正在发生我应该抓住它。
因此我必须添加catch(IOException e)
语句,但发生的异常是java.lang
库的数字格式例外,所以为什么我必须捕获ioException
。
答案 0 :(得分:5)
str=br.readLine();
BufferedReader.readLine()抛出 IOException 。
public String readLine() throws IOException
抛出:IOException - 如果发生I / O错误
因为 IOException 是一个已检查的异常,您需要使用try / catch块处理它或使用throws子句声明它。
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str=br.readLine();
i=Integer.parseInt(str);
}catch(IOException e)
{System.out.println("IOException occured... " + e.printStacktrace());
catch(NumberFormatException e)
{System.out.println("enter a valid input");
}
在java 7中多次捕获:
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
str=br.readLine();
i=Integer.parseInt(str);
}
catch(IOException | NumberFormatException ex) {
System.out.println(ex.printStackTrace())
}
答案 1 :(得分:0)
BufferedReader.readLine
可以抛出IOException
。
答案 2 :(得分:0)
请注意这一行str = br.readLine();可能会发生IOException
答案 3 :(得分:0)
这是因为,
bufferedReader.readLine ()
抛出IOException,这是一个经过检查的异常。所有已检查的异常都应该在try catch块中。您可以捕获IOException或泛型异常。代码段如下。 NumberFormatException也是一个运行时异常。除非需要,否则您无需捕获它。
try {
String str = bufferedReader.readLine ();
} catch (IOException ie) {
ie.printStacktrace();
}
try {
String str = bufferedReader.readLine ();
} catch (Exception ie) {
e.printStacktrace();
}