开发者

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

When should I use code snippet A instead of snippet B (i.e. what are the benefits of using snippet A)?:

Snippet A:

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

Snipp开发者_运维问答et B:

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

//codeblock C


Use a finally block if you have code that must execute regardless of whether or not an exception is thrown.

Cleaning up scarce resources like database connections are a good example.


An obvious case is when you re-raise or throw another exception in your catch block.


It's useful if you need to do some cleanup, e.g. close a database connection. Because "finally" is executed always, you don't need to do the bug-prone copy-paste of the same code in the end of the "try" and in also in one or more "catch" blocks.


You must almost always use the snippet with finally block when you have resources that needs clean up in both successful or error scenarios. A typical example is the jdbc connection object which should always be closed (clean up) in the finally block.


Imagine to have a return statement inside the catch block: the C block will not be executed in snippet B, but in snippet A it will, before returning.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜