In which outputs did the try{} block execute without
an exception?
|
1 |
In which outputs did the try{} block throw
an ArithmeticException?
|
2 |
In which outputs did the try{} block throw
an unhandled exception (one with no catch{} block)?
|
3 |
In which outputs did the finally{} block execute?
|
1, 2, 3 |
catch{}
Blocks
If there is a finally{}
block, then the
catch{}
blocks can be omitted:
try { // statements, some of which might // throw an exception } finally { // statements which will execute no matter // how the try block was exited. } // Statements following the structure
This might be done if you don't want to handle exceptions in your method, but you have a few statements that must execute no matter what before control is returned to the caller. This often happens if a method has a lock on some resource that it should give up before exiting. For example, if the method opens a file, it should (perhaps) close it before exiting.
Why can't the "Statements following the structure" be used to close a file that the method has opened?