Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 11: Handling Exceptions and Events J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Fourth.

Similar presentations


Presentation on theme: "Chapter 11: Handling Exceptions and Events J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Fourth."— Presentation transcript:

1 Chapter 11: Handling Exceptions and Events J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Fourth Edition Fourth Edition

2 Java Programming: From Problem Analysis to Program Design, Second Edition2 Objectives  Learn what an exception is.  See how a try / catch block is used to handle exceptions.  Become aware of the hierarchy of exception classes.  Learn about checked and unchecked exceptions.  Learn how to handle exceptions within a program.  Discover how to throw and rethrow an exception.  Learn how to handle events in a program.

3 Java Programming: From Problem Analysis to Program Design, Second Edition3 Exception  An occurrence of an undesirable situation that can be detected during program execution.  Examples:  Division by zero.  Trying to open an input file that does not exist.  An array index that goes out of bounds.

4 Java Programming: From Problem Analysis to Program Design, Second Edition4 Handling Exceptions within a Program  Can use an if statement to handle an exception.  However, suppose that division by zero occurs in more than one place within the same block.  In this case, using if statements may not be the most effective way to handle the exception.

5 Java Programming: From Problem Analysis to Program Design, Second Edition5 Java’s Mechanism of Exception Handling  When an exception occurs, an object of a particular exception class is created.  Java provides a number of exception classes to effectively handle certain common exceptions, such as:  Division by zero  Invalid input  File not found

6 Java Programming: From Problem Analysis to Program Design, Second Edition6 Java’s Mechanism of Exception Handling  Division by zero is:  An arithmetic error.  Handled by the class ArithmeticException.  When a division by zero exception occurs, the program creates an object of the class ArithmeticException.

7 Java Programming: From Problem Analysis to Program Design, Second Edition7 Java’s Mechanism of Exception Handling  When a Scanner object is used to input data into a program, any invalid input errors are handled using the class InputMismatchException.  The class Exception (directly or indirectly) is the superclass of all the exception classes in Java.

8 Java Programming: From Problem Analysis to Program Design, Second Edition8 try / catch / finally Block  Statements that might generate an exception are placed in a try block.  The try block:  Might also contain statements that should not be executed if an exception occurs.  Is followed by zero or more catch blocks.  A catch block:  Specifies the type of exception it can catch.  Contains an exception handler.

9 Java Programming: From Problem Analysis to Program Design, Second Edition9 try / catch / finally Block  The last catch block may or may not be followed by a finally block.  Any code contained in a finally block always executes regardless of whether an exception occurs, except when the program exits early from a try block by calling the method System.exit.  If a try block has no catch block, then it must have the finally block.

10 Java Programming: From Problem Analysis to Program Design, Second Edition10 try / catch / finally Block

11 Java Programming: From Problem Analysis to Program Design, Second Edition11 try / catch / finally Block  If no exception is thrown in a try block, all catch blocks associated with the try block are ignored and program execution resumes after the last catch block.  If an exception is thrown in a try block, the remaining statements in the try block are ignored.  The program searches the catch blocks in the order in which they appear after the try block and looks for an appropriate exception handler.

12 Java Programming: From Problem Analysis to Program Design, Second Edition12 try / catch / finally Block  If the type of the thrown exception matches the parameter type in one of the catch blocks, the code of that catch block executes and the remaining catch blocks are ignored.  If there is a finally block after the last catch block, the finally block executes regardless of whether an exception occurs.

13 Java Programming: From Problem Analysis to Program Design, Second Edition13 Order of catch Blocks  The heading of a catch block specifies the type of exception it handles.  A catch block can catch either all exceptions of a specific type or all types of exceptions.  A reference variable of a superclass type can point to an object of its subclass.

14 Java Programming: From Problem Analysis to Program Design, Second Edition14 Order of catch Blocks  If you declare an exception using the class Exception in the heading of a catch block, then that catch block can catch all types of exceptions because the class Exception is the superclass of all exception classes.  In a sequence of catch blocks following a try block, a catch block that declares an exception of a subclass type should be placed before catch blocks that declare exceptions of a superclass type.

15 Java Programming: From Problem Analysis to Program Design, Second Edition15 Order of catch Blocks

16 Java Programming: From Problem Analysis to Program Design, Second Edition16 Order of catch Blocks

17 Java Programming: From Problem Analysis to Program Design, Second Edition17 Order of catch Blocks

18 Java Programming: From Problem Analysis to Program Design, Second Edition18 Order of catch Blocks

19 Java Programming: From Problem Analysis to Program Design, Second Edition19 Order of catch Blocks

20 Java Programming: From Problem Analysis to Program Design, Second Edition20 Java’s Exception Class  class Exception :  Subclass of class Throwable.  Superclass of classes designed to handle exceptions.  Various types of exceptions:  I/O exceptions.  Number format exceptions.  File not found exceptions.  Array index out of bounds exceptions.  Various exceptions categorized into separate classes and contained in various packages.

21 Java Programming: From Problem Analysis to Program Design, Second Edition21 Java’s Exception Class

22 Java Programming: From Problem Analysis to Program Design, Second Edition22 Java’s Exception Class

23 Java Programming: From Problem Analysis to Program Design, Second Edition23 Java’s Exception Class

24 Java Programming: From Problem Analysis to Program Design, Second Edition24 Java’s Exception Class

25 Java Programming: From Problem Analysis to Program Design, Second Edition25 Java’s Exception Class

26 Java Programming: From Problem Analysis to Program Design, Second Edition26 Java’s Exception Class

27 Java Programming: From Problem Analysis to Program Design, Second Edition27 Checked Exceptions  Any exception that can be analyzed by the compiler.  Example:  FileNotFoundExceptions.

28 Java Programming: From Problem Analysis to Program Design, Second Edition28 Unchecked Exceptions  Exceptions that cannot be analyzed when the program compiles (must be checked for by programmer).  Examples:  Division by zero  Array index out of bounds  Syntax: throws ExceptionType1, ExceptionType2,... ExceptionType1, ExceptionType2, and so on are names of exception classes

29 Java Programming: From Problem Analysis to Program Design, Second Edition29 Exceptions Example Code public static void exceptionMethod() throws InputMismatchException, FileNotFoundException { //statements }  The method exceptionMethod throws exceptions of the type InputMismatchException and FileNotFoundException.

30 Java Programming: From Problem Analysis to Program Design, Second Edition30 The class Exception and the Operator instanceof  A reference of a superclass type can point to objects of its subclass.  You can determine if a reference variable points to an object using the operator instanceof.  You can combine catch blocks using this facility.

31 Java Programming: From Problem Analysis to Program Design, Second Edition31 try { System.out.print("Line 4: Enter the " + "dividend: "); dividend = console.nextInt(); System.out.println(); System.out.print("Line 7: Enter the " + "divisor: "); divisor = console.nextInt(); System.out.println(); quotient = dividend / divisor; System.out.println("Line 11: Quotient = " + quotient); } catch (Exception eRef) { if (eRef instanceof ArithmeticException) System.out.println("Line 14: Exception " + eRef.toString()); else if (eRef instanceof InputMismatchException) System.out.println("Line 16: Exception " + eRef.toString()); } The class Exception and the Operator instanceof

32 Java Programming: From Problem Analysis to Program Design, Second Edition32 Rethrowing and Throwing an Exception  When an exception occurs in a try block, control immediately passes to one of the catch blocks.  Typically, a catch block does one of the following:  Completely handles the exception.  Partially processes the exception.  In this case, the catch block either rethrows the same exception or throws another exception for the calling environment to handle the exception.  Rethrows the same exception for the calling environment to handle the exception.

33 Java Programming: From Problem Analysis to Program Design, Second Edition33 Rethrowing and Throwing an Exception  Useful when:  Catch block catches exception but is unable to handle it.  Catch block decides exception should be handled by calling environment.  Allows programmer to provide exception handling code in one place.  Syntax: throw exceptionReference;

34 Java Programming: From Problem Analysis to Program Design, Second Edition34 import java.util.*; public class RethrowExceptionExmp1 { static Scanner console = new Scanner(System.in); public static void main(String[] args) { int number; try { number = getNumber(); System.out.println("Line 5: number = " + number); } catch (InputMismatchException imeRef) { System.out.println("Line 7: Exception " + imeRef.toString()); } Rethrowing and Throwing an Exception

35 Java Programming: From Problem Analysis to Program Design, Second Edition35 public static int getNumber() throws InputMismatchException { int num; try { System.out.print("Line 11: Enter an “ + "integer: "); num = console.nextInt(); System.out.println(); return num; } catch (InputMismatchException imeRef) { throw imeRef; } Rethrowing and Throwing an Exception

36 Java Programming: From Problem Analysis to Program Design, Second Edition36 The Method printStackTrace  Used to determine the order in which the methods were called and where the exception was handled.

37 Java Programming: From Problem Analysis to Program Design, Second Edition37 import java.io.*; public class PrintStackTraceExample1 { public static void main(String[] args) { try { methodA(); } catch (Exception e) { System.out.println(e.toString() + " caught in main"); e.printStackTrace(); } The Method printStackTrace

38 Java Programming: From Problem Analysis to Program Design, Second Edition38 public static void methodA() throws Exception { methodB(); } public static void methodB() throws Exception { methodC(); } public static void methodC() throws Exception { throw new Exception("Exception generated " + " in method C"); } The Method printStackTrace

39 Java Programming: From Problem Analysis to Program Design, Second Edition39 Sample Run: java.lang.Exception: Exception generated in method C caught in main java.lang.Exception: Exception generated in method C at PrintStackTraceExample1.methodC (PrintStackTraceExample1.java:31) at PrintStackTraceExample1.methodB (PrintStackTraceExample1.java:26) at PrintStackTraceExample1.methodA (PrintStackTraceExample1.java:22) at PrintStackTraceExample1.main (PrintStackTraceExample1.java:11) The Method printStackTrace

40 Java Programming: From Problem Analysis to Program Design, Second Edition40 Exception-Handling Techniques  Terminate program.  Output appropriate error message upon termination.  Fix error and continue.  Repeatedly get user input.  Output appropriate error message until valid value is entered.  Log error and continue.  Write error messages to file and continue with program execution.

41 Java Programming: From Problem Analysis to Program Design, Second Edition41 Creating Your Own Exception Classes  Exception class you define extends class Exception or one of its subclasses.  Syntax to throw your own exception object: throw new ExceptionClassName(messageString);

42 Java Programming: From Problem Analysis to Program Design, Second Edition42 Creating Your Own Exception Classes public class MyDivisionByZeroException extends Exception { public MyDivisionByZeroException() { super("Cannot divide by zero"); } public MyDivisionByZeroException(String strMessage) { super(strMessage); }

43 Java Programming: From Problem Analysis to Program Design, Second Edition43 Event Handling  Action events:  Handled by implementing interface ActionListener.  Window events:  Handled by implementing interface WindowListener.  Mouse events:  Handled by implementing interface MouseListener.  Key events:  Handled by implementing interface KeyListener.

44 Java Programming: From Problem Analysis to Program Design, Second Edition44 Event Handling  class WindowAdapter :  Implements interface WindowListener with empty bodies to methods.  class MouseAdapter :  Implements interface MouseListener with empty bodies to methods.

45 Java Programming: From Problem Analysis to Program Design, Second Edition45 Registering Listeners  To register window listener object to GUI component:  Use method addWindowListener.  Window listener object being registered is passed as parameter to method addWindowListener.  To register mouse listener object to GUI component:  Use method addMouseListener.  Mouse listener object being registered is passed as parameter to method addMouseListener.

46 Java Programming: From Problem Analysis to Program Design, Second Edition46 Registering Listeners

47 Java Programming: From Problem Analysis to Program Design, Second Edition47 Registering Listeners

48 Java Programming: From Problem Analysis to Program Design, Second Edition48 Registering Listeners

49 Java Programming: From Problem Analysis to Program Design, Second Edition49 Programming Example: Calculator

50 Java Programming: From Problem Analysis to Program Design, Second Edition50 Chapter Summary  Exception definition  Handling exceptions within a program:  try / catch / finally block.  Order of catch blocks.  Using try / catch blocks in a program.  The class Exception and the Operator instanceof.  Rethrowing and throwing an exception.

51 Java Programming: From Problem Analysis to Program Design, Second Edition51 Chapter Summary  Exception  Hierarchy  Classes  Checked and unchecked exceptions  The method printStackTrace  Exception handling techniques:  Terminate program.  Fix error and continue.  Log error and continue.  Creating your own exception classes  Event handling


Download ppt "Chapter 11: Handling Exceptions and Events J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Fourth."

Similar presentations


Ads by Google