在Oracle OCP Java SE 8程序员II学习指南第3章中,它说明如下(pg )。184):
在Java6中,我们不能编写catch (Exception e),而只能抛出特定的异常。如果我们尝试,编译器仍然会抱怨:
未处理异常类型Exception。
这是什么意思?具体的例子是什么?
发布于 2018-11-25 21:52:59
请考虑以下示例:
Integer add (Integer a, Integer b) {
try {
return a + b;
} catch (Exception e) {
throw e;
}
}当然,添加两个数字不能抛出任何检查的异常。但是,在Java6中,编译器看到throw e,其中e是一个Exception,并得出结论,该方法可以抛出任何Exception。这需要add声明它是throws Exception。
在Java 7中,编译器在计算重新抛出异常时e的类型时会更聪明一些。在这种情况下,可以计算出e只能是一个RuntimeException (未经检查),因此添加throws Exception的声明不再必要。
https://stackoverflow.com/questions/53472292
复制相似问题