在Oracle OCP Java SE 8程序员II学习指南的第3章中,它说如下(第184页):
在Java 6中,我们不能编写catch (Exception e)而只是抛出特定的异常.如果我们尝试过,编译器仍会抱怨:
未处理的异常类型Exception.
这是什么意思?什么是具体的例子?
请考虑以下示例:
Integer add (Integer a, Integer b) {
try {
return a + b;
} catch (Exception e) {
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,添加两个数字不能抛出任何已检查的异常.然而,在Java 6中,编译器看到throw e,这里e是一个Exception,并得出结论,该方法可以抛出任何Exception.这需要添加声明它throws Exception.
从Java 7开始,编译器e在重新抛出异常时可以解决什么类型的异常.在这种情况下,它能够计算出e只能是RuntimeException(未经检查),因此throws Exception不再需要添加的声明.
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |