使用检查异常时发生Java错误编译

pxiryf3j  于 11个月前  发布在  Java
关注(0)|答案(1)|浏览(133)

我使用Eclipse,它给我一个给予编译错误,当我使用这个代码
IOException的无法到达的catch块。此异常永远不会从try语句体中引发

public void f() {
    try {
        System.out.println("");
    } catch (IOException e) {
        // TODO: handle exception
    }
}

字符串
但是当我使用Exception而不是IOException编译时,两者都是检查异常,我做错了什么?

3htmauhk

3htmauhk1#

catch (Exception e)是Java语言规范中的一种特殊情况。
如果catch子句可以捕获检查异常类E1,并且与catch子句对应的try块可以抛出作为E1的子类或超类的检查异常类,除非E1ExceptionException的超类,否则这是编译时错误。
catch (IOException e)只能捕获IOException及其子类,它们是 all 检查异常。
另一方面,catch (Exception e)可以捕获RuntimeException及其子类(以及其他异常),它们是 not 检查异常。因此,不能得出catch块永远不会被执行的结论。

相关问题