抛出异常问题

抛出异常问题

1
try {<br>    //读取配置文件,<br>     reader= Resources.getResourceAsReader("mybatis-config.xml");<br>} catch (IOException e) {<br>    //创建初始化异常;<br>    throw new ExceptionInInitializerError(e);<br>}<br>

​为什么throw new XXX异常就可以直接抛出, 

如果是throw e 的话,就要再次捕捉呢?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2021-05-11 16:19:41

同学你好,throw e抛出的是e实例,也就是上面通过catch捕获的IOException,而如果通过throw直接抛出没有做处理,系统还是会检测到没有处理,则需要进行捕获;如果是throw new ExceptionInInitializerError(e);抛出一个新异常,则说明当我们遇到IOException时主动抛出ExceptionInInitializerError通知调用者

祝学习愉快~

  • 提问者 rock221 #1

    也就是说throw e 是抛出了实例, 并不是对这个异常进行抛出,所以需要在throws 进行抛出这个实例的异常,或者我么new 一个新的异常名字, 把这个实例e给抛出,对吧

    2021-05-11 16:22:23
  • 好帮手慕阿园 回复 提问者 rock221 #2

    同学你好,throw new ExceptionInInitializerError(e)也是抛出了一个实例,但是throw e抛出的是e的实例,也就是相当于throw new IOException,这样就相当于并没有对这个异常进行处理,所以还是需要try-catch的;是的,可以通过new 一个新的实例用来处理这个异常

    祝学习愉快~

    2021-05-11 17:52:00
  • 提问者 rock221 回复 好帮手慕阿园 #3

    throw new ExceptionInInitializerError(e)抛出了一个实例,不用捕获了吗? 

    2021-05-11 17:54:30
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码