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
的代码,并且如果您想要处理 MyException
与 SuperException
不同,您可以同时拥有这两个块(并且您希望它们按此顺序排列)。
鉴于这些 类:
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
的代码,并且如果您想要处理 MyException
与 SuperException
不同,您可以同时拥有这两个块(并且您希望它们按此顺序排列)。