啊梨真神奇
2016-02-29 15:28
//关闭资源
try {
if(pw!=null)
pw.close();
if(os!=null)
os.close();
if(is!=null)
is.close();
if(isr!=null)
isr.close();
if(br!=null)
br.close();
为何要加一个判断条件?是在想不通!
这是一种正确、严谨的写法。
验证非NULL是编码中很重要的一环。假如本来就是NULL,这是调用各自的close()方法是会报错的。
如果在实例化这些对象时出错导致这些对象为NULL,或是实例化没问题但中途出了什么异常导致这些对象为NULL,都会在未经验证非NULL前尝试调用close()方法关闭时报错。
p.s. 讲师写socket关闭条件时写的是if(socket!=null)socket.close();这样写没错,但我想说一般是另一种写法if(!socket.isClosed())socket.close();
这样的代码才有健壮性
这是程序的严谨性
是在finally中执行的,就是说这段代码肯定执行。如果这些流在new的时候出错了,那调用close方法会抛出nullpoint exception。
非空验证,如果当pw、os、is等为空的时候close会报异常
Java Socket应用---通信是这样练成的
125013 学习 · 590 问题
相似问题