阿里巴巴Java开发手册 梳理笔记 - RuntimeException 应预先检查进行规避

阿里巴巴Java开发手册 梳理笔记 - RuntimeException 应预先检查进行规避

规约内容:

2.1 异常处理

1. 【强制】 Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应该
通过 catch 来处理,比如: IndexOutOfBoundsException , NullPointerException 等等。
说明:无法通过预检查的异常除外,如在解析一个外部传来的字符串形式数字时,通过 catch
NumberFormatException 来实现。
正例: if (obj != null) {...}
反例: try { obj.method() } catch (NullPointerException e) {...}

扩展资料

另一个角度看『异常』

在 Exception 中,unchecked 异常是运行时异常,它们都继承自 RuntimeException, 不需要程序进行显式的捕捉和处理,
unchecked 异常可以进一步细分为3 类:

可预测异常(Predicted Exception)
常 见 的 可预 测 异 常 包 括 IndexOutOfBoundsException、NullPointerException 等, 基 于对 代 码 的 性 能 和 稳定性要求,此类异常不应该被产生或者抛出,而应该提前做好边界检查、空指针判断等处理。显式的声明或者捕获此类异常会对程序的可读性和运行 效率产生很大影响。

需捕捉异常(Caution Exception)
例如在使用 Dubbo 框架进行 RPC 调用时 产生的远程服务超时异常 DubboTimeoutException,此类异常是客户端必须显式处理的异常,不能因服务端的异常导致客户端不可用,此时处理方案可以是重试或者降级处理等。

可透出异常 (Ignored Exception) 
主要是指框架或系统产生的且会自行处理的异常,而程序无须关心。例如针对 Spring 框架中抛出的 NoSuchRequestHa ndlingMethodException 异常,Spring 框架会自己完成异常的处理,默认将自身抛出的异常自动映射到合适的状态码,比如启动防护机制跳转到 404 页面。

Java异常梳理

常见的RuntimeException的子类
(1)ArithmeticException  算术异常
引发原因: 分母不能为0
如何避免:除之前,先判断分母
(2)ClassCastException  类型转换异常
(3)IllegalArgumentException    非法参数异常
具备子类:NumberFormatException 数字格式异常
引起原因:参数格式不合法
如何避免:通过某些技术,保证参数文本的有效格式(正则表达式,使用特殊字符制约格式)[0-9][a-z]
(4)IndexOutOfBoundsException 下标越界异常
具备两个子类:
ArrayIndexOutOfBoundsException 数组下标越界异常
StringIndexOutOfBoundsException 字符串下标越界异常
引起原因:下标超过有效边界  [0, ds.length-1]
如何避免:操作下标过程中避免越界
(5)NullPointerException   空指针异常
引起原因:调用null引用的成员  属性或 方法
如何避免:调用之前先判断是否为空
资料摘取自:http://f.dataguru.cn/java-338689-1-1.html

转载于:https://my.oschina.net/mengzhang6/blog/2993456

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值