Java如果继承了另一个Exception,是否会多次捕获一个Exception?

Will Java catch an Exception multiple times if it inherits another Exception?

鉴于这些 类:

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

只是第一个 (catcher1)。 first 匹配 catch 块被执行,none others.

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