<< Chapter < Page | Chapter >> Page > |
Execute return statement in catch block
The code in Listing 5 forces an ArithmeticException by attempting to do an integer divide by zero. Control is immediately transferred to the matching catch block, which prints a message and then executes a return statement.
Normally, execution of a return statement terminates the method immediately. In this case, however, before the method terminates and returnscontrol to the calling method, the code in the finally block is executed. Then control is transferred to the main method, which called this method in the first place.
Figure 8 shows the output produced by this program.
Figure 8 . Output produced by the finally block. |
---|
In catch, terminating aMethod
Executing finally block |
This program demonstrates that the finally block really does have the final word.
Declaring exceptions thrown by a method
Sometimes it is better to handle exceptions in the method in which they are detected, and sometimes it is better to pass them up the call stack and letanother method handle them.
In order to pass exceptions up the call stack, you must declare them in your method signature.
To declare that a method throws one or more exceptions, you add a throws clause to the method signature for the method. The throws clause is composed of the throws keyword followed by a comma-separated list of all the exceptions thrown by that method.
The throws clause goes after the method name and argument list and before the curly bracket that defines the scope of the method.
Figure 9 shows the syntax for declaring that a method throws four different types of exceptions.
Figure 9 . Syntax for declaring that a method throws exceptions. |
---|
void myMethod() throws
InterruptedException,MyException,
HerException,UrException
{//method code
}//end myMethod() |
Assuming that these are checked exceptions, any method calling this method would be required to either handle these exception types, or continuepassing them up the call stack. Eventually, some method must handle them or the program won't compile.
(Note however that while it might not represent good programming practice, it is allowable to declare that the main method throws exceptions. This is a way to avoid handling checked exceptions and still get your program tocompile.)
The throw keyword
Before your code can catch an exception, some Java code must throw one. The exception can be thrown by code that you write, or by code that you areusing that was written by someone else.
Regardless of who wrote the code that throws the exception, it's always thrown with the Java throw keyword. At least that is true for exceptions that are thrown by code written in the Java language.
(Exceptions such as ArithmeticException are also thrown by the runtime system, which is probably not written using Java source code.)
A single argument is required
When formed into a statement, the throw keyword requires a single argument, which must be a reference to an object instantiated from the Throwable class, or any subclass of the Throwable class. Figure 10 shows an example of such a statement.
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?