Is an ArithmeticException
a checked exception?
No.
Here is an example program. Notice that methodA
has two
try/catch structures.
It uses the static method parseInt()
of class Integer
to convert a string of characters into a primitive int
.
If the string can't be converted, parseInt()
throws a
NumberFormatException
.
import java.lang.* ; import java.io.* ; public class BuckPasser { public static int methodB( int divisor ) throws ArithmeticException { int result = 12 / divisor; // may throw an ArithmeticException return result; } public static void methodA( String input ) { int value = 0; try { value = Integer.parseInt( input ); // Convert the string to an int. // May throw a NumberFormatException } catch ( NumberFormatException badData ) { System.out.println( "Bad Input Data!!" ); return; // this is necessary; without it control will continue with the next try. } try { System.out.println( "Result is: " + methodB( value ) ); } catch ( ArithmeticException zeroDiv ) { System.out.println( "Division by zero!!" ); } } public static void main ( String[] a ) { Scanner scan = new Scanner( System.in ); String inData; System.out.print("Enter the divisor: "); inData = scan.next(); // Read a string from standard input methodA( inData ); // send the string to methodA } }
The clause throws ArithmeticException
in the header of methodB()
is not required, because ArithmeticException
s are not
checked.
If the user enters a string "0" then
main() calls MethodA MethodA calls MethodB MethodB causes an ArithmeticException by dividing by zero MethodB throws the exception back to MethodA MethodA catches the exception and prints "Division by zero!!" Control returns to main(), which exits normally.
Copy the program to a file, compile and run it. Play with it a bit. Exception handling is tricky; a little practice now will help you later.
Now say that the user enters the string "Rats". What message will be printed?