鉴于这些课程:
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块的顺序有什么不同吗?
答案 0 :(得分:1)
只是第一个(catcher1
)。匹配 first 的catch
块被执行,没有其他
有了问题中的代码,第二个catch
块将无法访问并且无法编译。但是,如果您的try
块包含可能抛出MyException
的代码以及可能抛出不是SuperException
的{{1}}的代码,并且您想处理{ {1}}与MyException
的不同之处在于,您可以同时拥有这两个区块(并且您希望按该顺序排列)。