【发布时间】:2016-02-17 12:32:43
【问题描述】:
class Test {
public static void main(String[] args) {
try {
String s = "5.6";
Integer.parseInt(s); // Cause a NumberFormatException
int i = 0;
int y = 2 / i;
}
catch (Exception ex) {
System.out.println("NumberFormatException");
}
catch (RuntimeException ex) {
System.out.println("RuntimeException");
}
}
}
正确答案是程序有编译错误。我认为catch (Exception ex) 会捕获所有异常,包括NumberFormatException,这是一个捕获所有异常的一般异常?
【问题讨论】:
-
好吧,异常(运行时)与编译时(编译)错误不同。
-
RuntimeException 的无法到达的 catch 块。它已经被 Exception 的 catch 块处理
-
因为
RuntimeException已经是Exception -
哦,我明白了,谢谢!我读到我们应该首先处理最具体的异常,但我没有意识到这会导致错误。