RuntimeException的手动抛出问题

元之田 2019-09-07 10:48:19
class Test {
public static void main(String[ ] args) {
try {
String s = "5.6";
Integer.parseInt(s); // Cause a NumberFormatException
int i = 0;
double y = 2 / i;
}
catch (Exception ex) {
System.out.println("NumberFormatException");
}
catch (RuntimeException ex) {
System.out.println("RuntimeException");
}
}
}

为什么这段代码会报出一下错误?
---------- javac ----------
homework.java:9: 错误: 已捕获到异常错误RuntimeException
catch (RuntimeException ex) {
^
1 个错误

输出完成 (耗时 0 秒) - 正常终止


此外如果把RuntimeException和Exception的位置互换,就不会报错?
...全文
248 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
oh_Maxy 2019-09-07
  • 打赏
  • 举报
回复
RuntimeException是Exception的子类,范围小的异常catch要放在范围大的异常前面。
沁海棠 2019-09-07
  • 打赏
  • 举报
回复
因为runtimeException是Exception的子类,捕获异常要由具体到抽象进行捕获。抛出runtimeException一直认为是Exception那catch runtimeException就进不去了。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧