|
|
Flow Control and Exception Handling - try-catch-finally
Syntax (JPL pg155)
try {
statements;
} catch (exceptionType1 identifier1) { // one or multiple
statements;
} catch (exceptionType2 identifier2) {
statements;
}
...
} finally { // one or none
statements;
}
- must include either one catch clause or a finally clause
- can be multiple catch clauses but only one finally clause
- the try statements are executed until an exception is thrown or it completes successfully
- a compile-error occurs if the code included in the try statement will never throw one of the caught checked exceptions (runtime exceptions never need to be caught)
- if an exception is thrown, each catch clause is inspected in turn for a type to which the exception can be assigned; be sure to order them from most specific to least specific
- when a match is found, the exception object is assigned to the identifier and the catch statements are executed
- if no matching catch clause is found, the exception percolates up to any outer try block that may handle it
- a catch clause may throw another exception
- if a finally clause is included, it's statements are executed after all other try-catch processing is complete
- the finally clause executes wether or not an exception is thrown or a break or continue are encountered
| Note |
- If a catch clause invokes System.exit() the finally clause WILL NOT execute.
|
Example Code
|