如果Java继承了另一个Exception,它将多次捕获一个Exception吗?

时间:2018-07-18 08:40:13

标签: java inheritance exception-handling

鉴于这些课程:

public static class SuperException extends Exception {
}


public static class MyException extends SuperException {
}

这在运行时发生:

try{
   throw new MyException();
} catch (MyException e) {
   catcher1();
} catch (SuperException e) {
   catcher2();
}

将调用哪些方法?只是第一个?都?写入catch块的顺序有什么不同吗?

1 个答案:

答案 0 :(得分:1)

只是第一个(catcher1)。匹配 first catch块被执行,没有其他

有了问题中的代码,第二个catch块将无法访问并且无法编译。但是,如果您的try块包含可能抛出MyException的代码以及可能抛出不是SuperException的{​​{1}}的代码,并且您想处理{ {1}}与MyException的不同之处在于,您可以同时拥有这两个区块(并且您希望按该顺序排列)。