Java笔记1.3--异常处理

异常处理:

1.finally中放资源回收的代码。(即使try catch中有return还是执行finally,只有system.exit(0),才不执行后面的finally)

释放IO连接,数据库连接,对象方法的强引用设为Null,清空clear集合。

2.当心runtimeException。常见的runtimeException有空指针异常,除0异常。无需用try catch,一旦发生就终止程序。

3.尽可能缩小try的监控范围。如果两个业务没有联系,就不要放在一个try里,要分开

4.在处理异常时候,先用特定的专业异常类处理,最后用Exception兜底。例如:

try{
    IO代码
    数据库操作代码
}
catch(IOException ioe){处理IO异常}
catch(SQLException ioe){处理数据库异常代码}
catch(Exception ioe){最后用Exception的基类处理}

在catch中,尽可能恢复异常(比如连接失败,进行重连,如果还失败,输出错误信息),或者详细输出异常信息,而不仅仅是抛出异常。(不好的案例catch(Exception ex){ex.printStackTraec();})

5.在写关于for循环的try时,最好把for放在外面,try catch放在里面,这样才能在迭代过程中某次出现异常,执行完catch后不影响下一次迭代。

finally,final,finalize的区别:

finalize:相当于c++的析构函数,对象回收前调用,不建议重写该方法,一般采用object默认的,重写不好可能导致内存泄漏。

final:1.作用在类上的时候表示类不能被继承,final类的方法也会隐式设置为final,不可被覆盖。2.也可以只在某个方法上作用final,动机和类一样,防止子类通过覆盖方法修改逻辑。3.作用在变量上,为常量不可修改。4.作用在引用上,该引用不能指向其他的内存地址,但是该引用指向的值可以修改。

方法:在详细设计和代码review中根据业务需求在类和方法前加final。在finally中加入资源回收。项目无需重写finallize方法。

猜你喜欢

转载自blog.csdn.net/lfanchenyu/article/details/107476024