我搞不懂,为什么if的判断条件是 br !=null 呢? 难道是要在br这个对象不是空的时候就要释放资源吗?
有用望采纳
你这图跟你描述的好像不太搭边啊
首先,整体结构是个try,catch,finally的结构
主要代码在try里面,如果抛错,代码会进入catch块,不管抛错不抛错,最终都会执行finally,哪怕try里面执行了return也会先执行完finally再返回
=-=-=
再看finally里面,这里就要处理需要释放的资源了。但是有时释放资源也会失败,无法释放。
那么要保证即使资源释放错误,代码也不要原地崩溃闪退,也用try包住
非空判断主要是为了防止在最初的try里一开始就已经出错,导致br根本没有获得IO资源的指针,此时如果执行close,相当于null.close(),那肯定要出错的
如果没有后面的catch处理的话,反正加过try了问题不大,但catch里面要做故障记录,那么就会导致一个错误,2次记录,所以还是要先判断非空较好
而且try代码块里报错时性能较差,会卡顿,做非空判断对性能提升比较好。
简单来说就是br这个对象有可能为空,如果不判断,万一是null就会报空指针