簡體   English   中英

我什么時候應該在Java的try-catch-finally中使用finally-block

[英]When should I use the finally-block in Java's try-catch-finally

我何時應該使用代碼段A而不是代碼段B(即使用代碼段A的好處是什么)?:

片段A:

try {
    // codeblock A
}
catch (Exception ex) {
    // codeblock B
}
finally {
    //codeblock C
}

代碼片段B:

try {
    // codeblock A
}
catch (Exception ex) {
    // codeblock B
}

//codeblock C

如果您有必須執行的代碼,請使用finally塊,無論是否拋出異常。

清理數據庫連接等稀缺資源就是一個很好的例子。

一個明顯的例子是當你在catch塊中重新引發或拋出另一個異常時。

如果您需要進行一些清理,例如關閉數據庫連接,這很有用。 因為“finally”總是被執行,所以你不需要在“try”結束時以及在一個或多個“catch”塊中進行相同代碼的容易出錯的復制粘貼。

當您在成功或錯誤情況下需要清理資源時,您幾乎總是必須使用finally塊的片段。 一個典型的例子是jdbc連接對象,它應該總是在finally塊中關閉(清理)。

想象一下在catch塊中有一個return語句: C塊不會在片段B中執行,但在片段A中它會在返回之前執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM