大家好,又见面了,我是你们的朋友全栈君。
RuntimeException
可以通过预先检查进行规避,而不应该通过catch 来处理,比如:IndexOutOfBoundsException
,NullPointerException
等等。说明:无法通过预检查的异常除外,如在解析一个外部传来的字符串形式数字时,通过catch
NumberFormatException
来实现。
正例:if (obj != null) {...}
反例:try { obj.method() } catch (NullPointerException e) {...}
ry-catch
,这是不负责任的表现。catch时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的catch尽可能进行区分异常类型,再做对应的异常处理。try-with-resources
方式。public int f() { return Integer对象}
, 如果为null,自动解箱抛NPE。
2) 数据库的查询结果可能为null。
3) 集合里的元素即使isNotEmpty,取出的数据元素也可能为null。
4) 远程调用返回对象时,一律要求进行空指针判断,防止NPE。
5) 对于Session中获取的数据,建议NPE检查,避免空指针。
6) 级联调用obj.getA().getB().getC()
;一连串调用,易产生NPE。
正例:使用JDK8的Optional类来防止NPE问题。unchecked / checked
异常,避免直接抛出new RuntimeException()
,更不允许抛出Exception
或者Throwable
,应使用有业务含义的自定义异常。推荐业界已定义过的自定义异常,如:DAOException / ServiceException
等。Don’t Repeat Yourself
),即DRY原则。
说明:随意复制和粘贴代码,必然会导致代码的重复,在以后需要修改时,需要修改所有的副本,容易遗漏。必要时抽取共性方法,或者抽象公共类,甚至是组件化。
正例:一个类中有多个public方法,都需要进行数行相同的参数校验操作,这个时候请抽取: private boolean checkParam(DTO dto) {...}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106527.html原文链接:https://javaforall.cn