孤尽班第五天笔记--异常处理

本文探讨了Java异常处理的重要性和流程,包括捕获和处理异常的策略,如使用Throwable类进行拦截,避免在finally块中使用return,以及try with resources的异常压制机制。文章还提到了特殊异常场景,如NullPointerException的处理,建议使用Optional,并警告了在foreach循环中进行元素修改可能导致的并发问题。
摘要由CSDN通过智能技术生成

异常的作用

  • 异常应当描述导致当前异常发生的原因
  • 根据异常栈快速定位到异常发生的位置
  • 结合异常描述和异常栈解决异常

异常的处理流程图 

try代码块中可能会抛出多种异常,该怎么捕获?

如果多种异常共有一个父类,并且处理它们的方式是一致的,那么我们可以catch这个父类并进行处理;如果多种异常的处理方式并不相同,那么先catch子类异常,然后逐步升级,最后catch级别最高的父类异常,并在每个catch中定义相应的处理逻辑。

Throwable的抓取规约

【强制】在调用RPC、二方包、或动态生成类的相关方法时,捕捉异常必须使用Throwable类来进行拦截。

根据《阿里巴巴Java开发手册》,通过反射机制来调用方法,如果找不到方法,抛出NoSuchMethodException。什么情况会抛出NoSuchMethodError呢?二方包在类冲突时,仲裁机制可能导致引入非预期的版本使类的方法签名不匹配,或者在字节码修改框架(比如:ASM)动态创建或修改类时,修改了相应的方法签名。这些情况,即使代码编译期是正确的,但在代码运行期时,会抛出NoSuchMethodError。

下面这篇文章解释了Maven的仲裁机制如何会引入错的jar包&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值