转载自同事张文兵,希望好的分享能够扩散!
发现小伙伴们的程序对资源清理一点都不规范,比如数据库连接、文件流等,这些资源都是特别珍贵的,使用完了就一定要关闭!在这里给小伙伴做一个分享,少走一些弯路:
文件流关闭分析
1,错误范例1:
在以上代码中,如果在(1)中发生了异常,那么流就得不到关闭,这是非常危险的。
提醒:
关闭流是无乱如何都要做的事情,不管之前的代码是否发生了异常,所以我们应该把关闭流的操作放在finally语句中。
2,关闭流改进1:
那么,只要放到finally语句中就行了吗?显然不是,以上代码还是有问题!如果流没有打开,即in==null,那么将会出现空指针异常。
注意:
在程序中,我们要使用数据,一定要遵循先检查再使用的原则,不然会出现各种各样难以预期的问题。
3,关闭流改进2:
以上的代码消除了空指针异常,就是完美的代码吗?当然不是,我们知道流关闭也会抛出异常,假如以上的(1)抛出了异常,那么(2)将不会执行,也就是(2)得不到关闭,可以想象是多危险了吧?
4,完美关闭流范例:
也就是:
(1)放在finally语句中;
(2)先校验数据,再使用;
(3)一个关闭使用一个try catch语句,这样,无乱之前的流关闭是否正常进行,后面的流关闭语句都会执行到。
代码谁也会写,但是我们要的是安全、简洁、可读性高、易扩展代码,作为程序员,代码就是我们的脸面,让我们一起美容吧!