首页 > 解决方案 > 如果Java继承另一个异常,Java会多次捕获一个异常吗?

问题描述

给定这些类:

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块的顺序有什么区别吗?

标签: javainheritanceexception-handling

解决方案


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

使用问题中的代码,第二个catch块无法访问并且无法编译。但是,如果您的try块包含可能抛出MyException的代码,以及可能抛出SuperException不是 a 的代码MyException,并且如果您想以与MyException不同的方式处理SuperException,您可以同时拥有这两个块(并且您希望它们按该顺序排列)。


推荐阅读