Java低于Java 7的版本中的catch(Exception e)

时间:2018-11-25 21:42:33

标签: java exception-handling

在《 Oracle OCP Java SE 8程序员II学习指南》的第3章中,其内容如下(第184页):

在Java 6中,我们不能编写catch (Exception e),而只能抛出特定的异常。如果我们尝试了,编译器仍然会抱怨:

未处理的异常类型Exception

这是什么意思?什么是具体示例?

1 个答案:

答案 0 :(得分:6)

考虑以下示例:

Integer add (Integer a, Integer b) {
    try {
        return a + b;
    } catch (Exception e) {
        throw e;
    }
}

当然,两个数字的加法不能引发任何已检查的异常。但是,在Java 6中,编译器看到throw e,其中eException,并得出结论该方法可以抛出任何Exception。这需要使用add声明为throws Exception

从Java 7开始,编译器在重新抛出时可以算出异常类型e会更聪明。在这种情况下,可以算出e只能是RuntimeException(未选中),因此不再需要添加throws Exception的声明。