java中,异常必须被捕获才行吗?
因为不捕获或者抛出异常,程序就无法通过编译
而抛出异常实际上也是留给后面的代码来捕获异常
我的理解对吗?
java中,异常必须被捕获才行吗? 因为不捕获或者抛出异常,程序就无法通过编译 而抛出异常实际上也
答案:2 悬赏:10 手机版
解决时间 2021-03-23 14:25
- 提问者网友:爱唱彩虹
- 2021-03-22 17:38
最佳答案
- 五星知识达人网友:人類模型
- 2021-03-22 18:36
你只要记住 异常必须被处理 就是捕获或者抛出 要不编译就不通过
全部回答
- 1楼网友:归鹤鸣
- 2021-03-22 19:54
首先,你先无视掉那个机器人的回答吧……
因为第3个catch捕获的exception类是arithmeticexception的子类,而你的程序抛出的就是arithmeticexception类异常,那么在第1个catch语句捕获到的arithmeticexception类异常,同时也属于exception类异常,也就是说exception类异常已经被第1个catch语句捕获了,那么第3个catch语句自然是无异常可捕获了。打个比方,狩猎——假如你打到了一个兔子,别人问你有没有打到猎物,你不能说我打到的是兔子,不是猎物吧?同样的,arithmeticexception类异常,就属于exception类异常。
想读懂这个try语句,你首先应该查一下javaapi文档,你先看一下你的3个catch语句捕获的3个异常类的继承关系:
所以,这个try语句先判断程序抛出的异常是否是arithmeticexception异常,如果是的话,下边2个catch语句就无异常可捕获了;再判断是不是除了arithmeticexception异常以外的runtimeexception异常,如果是的话,由第2个catch语句处理;如果还不是,判断是不是除了runtimeexception异常以外的exception异常,是的话由第3个catch语句处理。
当然了,如果你就是想既输出arithmeticexception又输出exception,你可以写在finally语句里;但如果你想这3个判断语句只要对都输出(3次都捕获),就1个finally语句显然不够,你可以先捕获父类exception异常,再用instanceof判断是否为arithmeticexception异常或runtimeexception异常,代码如下:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯