在IO流和Socket编程中,我们在最后总是要对资源进行关闭.
这个关闭操作通常会放在finally中,以至于不管怎样都会被执行,但是对关闭流操作执行try - catch时,为什么都会加上一个非空的判断?
因为如果某个资源为空,直接就会跳转至finally中,这时如果直接调用close方法,就会报出空指针异常的错误.只有资源不为空时,我们才可以调用close方法
代码如下:
//try-catch的部分省略
finally {
if (bufferedOutputStream != null){
try {
bufferedOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (accept != null){
try {
accept.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}