Upload
ike
View
33
Download
0
Embed Size (px)
DESCRIPTION
CSE 1341 Principles of Computer Science I. Spring 2008 Mark Fontenot [email protected]. Note Set 10. Note Set 10 Overview. Exception Handling. exception. Exception – an indication of a problem that occurs during a program’s execution - PowerPoint PPT Presentation
Citation preview
Note Set 10 Overview
Exception Handling
exceptionException – an indication of a problem that occurs during a
program’s executionException handling allows the graceful handling of errors in
a program. Goal – allow the program to continue executing as if no
problem had been encountered
Can somewhat separate error handling code from regular processing code
The standard
Do Something (processing)Check to see if it worked (error checking)
Do something elseCheck to see if it worked
Do SomethingCheck to see if it worked
1 // Fig. 13.1: DivideByZeroNoExceptionHandling.java 2 // An application that attempts to divide by zero. 3 import java.util.Scanner; 4 5 public class DivideByZeroNoExceptionHandling 6 { 7 // demonstrates throwing an exception when a divide-by-zero occurs 8 public static int quotient( int numerator, int denominator ) 9 { 10 return numerator / denominator; // possible division by zero 11 } // end method quotient 12 13 public static void main( String args[] ) 14 { 15 Scanner scanner = new Scanner( System.in ); // scanner for input 16 17 System.out.print( "Please enter an integer numerator: " ); 18 int numerator = scanner.nextInt(); 19 System.out.print( "Please enter an integer denominator: " ); 20 int denominator = scanner.nextInt(); 21 22 int result = quotient( numerator, denominator ); 23 System.out.printf( 24 "\nResult: %d / %d = %d\n", numerator, denominator, result ); 25 } // end main 26 } // end class DivideByZeroNoExceptionHandling Please enter an integer numerator: 100 Please enter an integer denominator: 7 Result: 100 / 7 = 14
Attempt to divide; denominator may be zero
Read input; exception occurs if input is not a valid integer
Please enter an integer numerator: 100 Please enter an integer denominator: 7 Result: 100 / 7 = 14 Please enter an integer numerator: 100 Please enter an integer denominator: 0 Exception in thread "main" java.lang.ArithmeticException: / by zero at DivideByZeroNoExceptionHandling.quotient(DivideByZeroNoExceptionHandling.java:10) at DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:22) Please enter an integer numerator: 100 Please enter an integer denominator: hello Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at java.util.Scanner.nextInt(Unknown Source) at DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:20)
Stack Trace
Exception Handling Codetry { //put code here that might // throw an exception //if exception is thrown, move to catch}catch (InputMismatchException e) { //Handle the exception case here – do what is //needed to gracefully recover from the //exception }catch (Exception e) { //Can handle multiple types of exceptions}
Exceptionhandlers
Uncaught exception – exception for which there is no exception handler - exception type doesn’t match any of the catch blocks
Try Block
Exception Parameter
ExceptionTestpublic class ExceptionTest { public static void main (String [] args) { int x = 3; int y = 0; int z = x / y; System.out.println(z); } }
throws ArithmeticException
run:Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionTest.main(ExceptionTest.java:9)Java Result: 1
ExceptionTest2public class ExceptionTest2 { public static void main (String [] args) { int x = 3; int y = 0; int z = 0; try { z = x / y; } catch (ArithmeticException e) { System.out.println("Exception Caught"); } System.out.println(z); } } run-single:
Exception Caught0
With Scannerimport java.util.*;
public class ExceptionTest3 { public static void main (String [] args) { Scanner s = new Scanner(System.in); int x = 0; int y = 0; try { x = s.nextInt(); } catch (InputMismatchException e) { e.printStackTrace(); } } }
Use Java API
JAVA API lists the exceptions thrown by each method
Termination Model of Exception Handling
try { code line 1 code line 2 code line 3} catch (Exception e) { handler 1 handler 2} code line 4code line 5
if line 2 throws exception,control transfers to exception handler then to line of code afterhandlers.
ObjectvilleAll exception classes directly or indirectly extend
java.lang.Exception.It is possible to create your own exception classes by
extending java.lang.Exception.
ObjectvilleUnchecked Exceptions
Subclass of RuntimeExceptionNot required to be handled
Checked ExceptionsSubclass of ExceptionMust be handled or explicitly
or declared w/ throws
throws
public int myFunction () throws MySpecialException {
//Code here that could throw a MySpecialException //but you don’t want to handle it here for some reason //so you have to declare that this method could also throw //MySpecialException – a checked exception
}