| To respond to an exception, the call to the method that
produces it must be placed within a try block. |
| |
| A try block is a block of code beginning with the try keyword
followed by a left and right curly brace. Every try block is
associated with one or more catch blocks. Here is a try block: |
| |
try
{
// method calls go here
} |
| |
| If a method is to catch exceptions thrown by the methods it
calls, the calls must be placed within a try block. |
| |
| If an exception is thrown, it is handled in a catch block.
Different catch blocks handle different types of exceptions. |
| |
| This is a try block and a catch block
set up to handle exceptions of type Exception: |
| |
try
{
// method calls go here
}
catch( Exception e )
{
// handle exceptons here
} |
| |
| When any method in the try block throws any type of
exception, execution of the try block ceases. Program control
passes immediately to the associated catch block. |
| If the catch block can handle the given exception type, it takes over. |
| |
| If it cannot handle the exception, the exception
is passed to the method's caller. In an application, this
process goes on until a catch block catches the exception
or the exception reaches the main() method uncaught and
causes the application to terminate. |
| |
| |
| An Exceptional Example |
| The gradeTest application. |
| |
import java.io.* ;
import java.lang.Exception ;
public class gradeTest
{
public static void main( String[] args )
{
try
{
// the second call to passingGrade throws
// an excption so the third call never
// gets executed
System.out.println( passingGrade( 60, 80 ) ) ;
System.out.println( passingGrade( 75, 0 ) ) ;
System.out.println( passingGrade( 90, 100 ) ) ;
}
catch( Exception e )
{
System.out.println( "Caught exception --" +
e.getMessage() ) ;
}
}
static boolean passingGrade( int correct, int total )
throws Exception
{
boolean returnCode = false ;
if( correct > total ) {
throw new Exception( "Invalid values" ) ;
}
if ( (float)correct / (float)total > 0.70 )
{
returnCode = true ;
}
return returnCode ;
}
} |
|
|
| |
| The second call to passingGrade() fails in this case
because the method checks to see whether the number of correct
responses is less than the total responses. |