抛出异常问题

抛出异常问题

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

​为什么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下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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