(一)异常处理
1.不要捕获Java类库中定义的继承自RuntimeException的运行时异常类,如IndexOutOfBoundsException/NullPointerException,
这类异常由程序员预检查来规避,保证程序健壮性。
正例:if(obj!=null){...}
反例:try{obj.method()}catch(NullPointerException e){...}
2.异常不要用来做流程控制,条件控制,因为异常的处理效率比条件分支低。
3.对大段代码进行try-catch,这是不负责任的表现。catch时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。
对于非稳定代码的catch尽可能进行区分异常类型,再做对应的异常处理。
4.捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。
5.有try块放到了事务代码中,catch异常后,如果需要回滚事务,一定要注意手动回滚事务。
6.finally块必须对资源对象,流对象进行关闭,有异常也要做try-catch.
说明:如果JDK7,可以使用try-with-resources方式。<