亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

對教程的程序有一個不解之處

//關閉資源

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();

為何要加一個判斷條件?是在想不通!

正在回答

4 回答

這是一種正確、嚴謹的寫法。

驗證非NULL是編碼中很重要的一環。假如本來就是NULL,這是調用各自的close()方法是會報錯的。

如果在實例化這些對象時出錯導致這些對象為NULL,或是實例化沒問題但中途出了什么異常導致這些對象為NULL,都會在未經驗證非NULL前嘗試調用close()方法關閉時報錯。

p.s. 講師寫socket關閉條件時寫的是if(socket!=null)socket.close();這樣寫沒錯,但我想說一般是另一種寫法if(!socket.isClosed())socket.close();

0 回復 有任何疑惑可以回復我~
#1

啊梨真神奇 提問者

受教了,謝謝!
2016-07-04 回復 有任何疑惑可以回復我~

這樣的代碼才有健壯性

0 回復 有任何疑惑可以回復我~

這是程序的嚴謹性

是在finally中執行的,就是說這段代碼肯定執行。如果這些流在new的時候出錯了,那調用close方法會拋出nullpoint exception。

0 回復 有任何疑惑可以回復我~
#1

染紅_街道

把它放在try最后也可以啊,如果前面報錯,那么后面根本不會執行,何來關閉之說
2016-07-11 回復 有任何疑惑可以回復我~

非空驗證,如果當pw、os、is等為空的時候close會報異常

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

對教程的程序有一個不解之處

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號