The try/catch/finally
statement is used in
Java to handle
Exceptions and abnormal exits.
It consists of three blocks:
try,
catch and
finally.
Here I will attempt to demonstrate its most common use, in catching and handling exceptions...
public void rooExample() {
try {
// in this try block we're going to call a method
// which might throw SomeWeirdException.
doThingWhichMightThrowException();
.
.
}
catch (SomeWeirdException e1) {
// If the exception was caught
System.out.println("ARGH! This exception was thrown... " + e1);
}
}
Zero or more catch blocks can be used to catch different exceptions within the same code.
If the specified exception is thrown in the
try block, execution is halted and control is passed to the
start of the relevant
catch block.
Exceptions can be subclassed, and a catch block handles the specified exception and any subclasses of
that exception. Thus, it is common to see
catch (Exception e)
Finally, the
finally block. This is optional. It's so optional in fact that I have known many seasoned
Java developers who didn't know why it was useful.
The finally block is guaranteed to be executed. "So what?",
some people ask, "The code after the try/catch/finally statement is going to execute anyway!"
Well, if the try block contains something which would transfer control such as
return, break or continue, then the code may not reach the next line after the
try/catch/finally statement all. By using a finally block, you can ensure that your important clean-up code
is executed regardless of how the try block finished.