在我們編碼過程中,不可避免的會用到於檔案操作 io 流、資料庫連線等開銷比較大的資源,用完之後需要通過 close 方法將其關閉,否則資源一直處於開啟狀態,可能會導致記憶體洩露等問題。
拿檔案操作流舉例,我們在使用時要try catch
,用完了在finally
中關閉,而關閉的時候還需要再try catch
,可以說是非常麻煩了!**如下:
/**傳統寫法**/
bufferedreader br = null;
try}
catch
(ioexception e)
finally
catch
(ioexception e)
}}
而我們的新姿勢是使用jdk1.7中的try-with-resources
語法,直接上**:
/**使用語法糖**/
try(bufferedreader br1 =
newbufferedreader
(new
filereader(""
)))}
catch
(ioexception e)
**是不是瞬間清爽了很多?趕緊用起來吧~
我們順便再來刨根究底一下吧,看下他編譯之後的樣子:
try
}catch
(throwable var32)
}finally
catch
(throwable var31)
}else}}
}catch
(ioexception var34)
其實背後的原理也很簡單,讓編譯器都幫我們做了關閉資源的工作而已。所以,再次印證了,語法糖的作用就是方便程式設計師的使用,最終還是要轉成編譯器認識的語言。 finally學習筆記
public class testfinally static int test finally public class testfinally1 public int get finally try中的return語句呼叫函式先於finally中呼叫的函式執行,也就說return語句先執行,fi...
物件導向 異常finally
finally 塊 定義一定執行的 通常用於關閉資源。class fushuexception extends exception class demo class exceptiondemo5 catch fushuexception e finally system.out.println ov...
finally的特殊用途
finally允許你定義乙個finally block 若try block被執行則這個finally block必定被執行,即使try block中發生了跳轉或者異常 它會在跳轉或異常前執行 function test finally test 這個特性很重要,它允許我們做某些事情 比如觸發事件的...