重新抛出异常
在catch块内处理完后,可以重新抛出异常,异常可以是原来的,也可以是新建的,如下所示:
try{
     //可能触发异常的代码
 }catch(NumberFormatException e){
     System.out.println("not valid number");
     throw new AppException("输入格式不正确", e);
 }catch(Exception e){
     e.printStackTrace();
     throw e;
 }
对于Exception,在打印出异常栈后,就通过throw e重新抛出了。
而对于NumberFormatException,重新抛出了一个AppException,当前Exception作为cause传递给了AppException,这样就形成了一个异常链,捕获到AppException的代码可以通过getCause()得到NumberFormatException。
为什么要重新抛出呢?因为当前代码不能够完全处理该异常,需要调用者进一步处理。
为什么要抛出一个新的异常呢?当然是因为当前异常不太合适。不合适可能是信息不够,需要补充一些新信息;还可能是过于细节,不便于调用者理解和使用,如果调用者对细节感兴趣,还可以继续通过getCause()获取到原始异常。
了解更多Java知识,点击下方链接和小编一起学习,Java资料以及学习笔记等你来嫖~
https://www.bilibili.com/video/BV1S14y1n7a9/?p=3&spm_id_from=pageDriver&vd_source=a7816e3b2a3a67ac39dc87f6bf92421c
https://www.bilibili.com/video/BV1S14y1n7a9/?p=3&spm_id_from=pageDriver&vd_source=a7816e3b2a3a67ac39dc87f6bf92421c







![[附源码]Python计算机毕业设计SSM晋中学院教室管理系统(程序+LW)](https://img-blog.csdnimg.cn/db651479d9524dffa6d6f3ca2d75b9a6.png)





![[附源码]计算机毕业设计小太阳幼儿园学生管理系统Springboot程序](https://img-blog.csdnimg.cn/312a5ce167264dd189ed255e4d517b01.png)

![[附源码]Python计算机毕业设计SSM教务管理系统(程序+LW)](https://img-blog.csdnimg.cn/865e25fea1bf46bfb0deac82dc19db31.png)



