java - 如果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块的顺序有什么区别吗?
解决方案
只是第一个(catcher1
)。第一个匹配catch
块被执行,没有其他块。
使用问题中的代码,第二个catch
块无法访问并且无法编译。但是,如果您的try
块包含可能抛出MyException
的代码,以及可能抛出SuperException
不是 a 的代码MyException
,并且如果您想以与MyException
不同的方式处理SuperException
,您可以同时拥有这两个块(并且您希望它们按该顺序排列)。
推荐阅读
- c# - MQQueueManager 消息池
- java - 从 makefile 中的 src 和 res 文件夹编译 Jar 文件
- asp.net - 在 IIS express 中运行相同的应用程序引发错误
- amazon-web-services - 我应该将什么作为 CodeBuild 的 SecurityGroup?
- java - 带有 Spring WebFlow 的 Google reCAPTCHA
- python - TypeError:预期的 str、字节或 os.PathLike 对象,而不是元组
- mysql - 插入忽略或替换忽略不起作用
- jquery - 日期时间选择器问题
- reactjs - TypeError:this.state.patients.map 不是函数
- apache-spark - spark 独立模式通过 spark.driver.extraJavaOptions