* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download ch12
Survey
Document related concepts
Functional programming wikipedia , lookup
Stream processing wikipedia , lookup
Java syntax wikipedia , lookup
Scala (programming language) wikipedia , lookup
Go (programming language) wikipedia , lookup
Falcon (programming language) wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Control flow wikipedia , lookup
Corecursion wikipedia , lookup
Reactive programming wikipedia , lookup
Java (programming language) wikipedia , lookup
Object-oriented programming wikipedia , lookup
C Sharp syntax wikipedia , lookup
Java performance wikipedia , lookup
Transcript
Chapter 12: Handling Exceptions and Events Java Programming: Program Design Including Data Structures Chapter 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 Java Programming: Program Design Including Data Structures 2 Chapter Objectives (continued) Learn how to handle exceptions within a program Discover how to throw and rethrow an exception Learn how to handle events in a program Java Programming: Program Design Including Data Structures 3 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 Java Programming: Program Design Including Data Structures 4 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 Java Programming: Program Design Including Data Structures 5 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 handle certain common exceptions, such as: Division by zero Invalid input File not found Java Programming: Program Design Including Data Structures 6 Java’s Mechanism of Exception Handling (continued) 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 Java Programming: Program Design Including Data Structures 7 Java’s Mechanism of Exception Handling (continued) 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 Java Programming: Program Design Including Data Structures 8 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 Java Programming: Program Design Including Data Structures 9 try/catch/finally Block (continued) 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 Java Programming: Program Design Including Data Structures 10 try/catch/finally Block (continued) Java Programming: Program Design Including Data Structures 11 try/catch/finally Block (continued) 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 Java Programming: Program Design Including Data Structures 12 try/catch/finally Block (continued) 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 Java Programming: Program Design Including Data Structures 13 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 Java Programming: Program Design Including Data Structures 14 Order of catch Blocks (continued) 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 Java Programming: Program Design Including Data Structures 15 Order of catch Blocks (continued) Java Programming: Program Design Including Data Structures 16 Order of catch Blocks (continued) Java Programming: Program Design Including Data Structures 17 Order of catch Blocks (continued) Java Programming: Program Design Including Data Structures 18 Order of catch Blocks (continued) Java Programming: Program Design Including Data Structures 19 Order of catch Blocks (continued) Java Programming: Program Design Including Data Structures 20 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 Java Programming: Program Design Including Data Structures 21 Java’s Exception Class (continued) Java Programming: Program Design Including Data Structures 22 Java’s Exception Class (continued) Java Programming: Program Design Including Data Structures 23 Java’s Exception Class (continued) Java Programming: Program Design Including Data Structures 24 Java’s Exception Class (continued) Java Programming: Program Design Including Data Structures 25 Java’s Exception Class (continued) Java Programming: Program Design Including Data Structures 26 Java’s Exception Class (continued) Java Programming: Program Design Including Data Structures 27 Checked Exceptions Any exception that can be analyzed by the compiler Example: FileNotFoundExceptions Java Programming: Program Design Including Data Structures 28 Unchecked Exceptions Exceptions that cannot be analyzed when the program compiles (programmer must be check) Examples: Division by zero Array index out of bounds Syntax: throws ExceptionType1, ExceptionType2,... ExceptionType1, ExceptionType2, and so on are names of exception classes Java Programming: Program Design Including Data Structures 29 Exceptions Example Code public static void exceptionMethod() throws InputMismatchException, FileNotFoundException { //statements } The method exceptionMethod throws exceptions of the type InputMismatchException and FileNotFoundException Java Programming: Program Design Including Data Structures 30 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 Java Programming: Program Design Including Data Structures 31 The class Exception and the Operator instanceof 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); } Java Programming: Program Design Including Data Structures 32 The class Exception and the Operator instanceof (continued) 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()); } Java Programming: Program Design Including Data Structures 33 Rethrowing and Throwing an Exception When an exception occurs in a try block, control immediately passes to one of the catch blocks 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 Java Programming: Program Design Including Data Structures 34 Rethrowing and Throwing an Exception (continued) 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; Java Programming: Program Design Including Data Structures 35 Rethrowing and Throwing an Exception 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()); } } } Java Programming: Program Design Including Data Structures 36 Rethrowing and Throwing an Exception 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; } } Java Programming: Program Design Including Data Structures 37 The Method printStackTrace Determines the order in which the methods were called and where the exception was handled Java Programming: Program Design Including Data Structures 38 The Method printStackTrace 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(); } } Java Programming: Program Design Including Data Structures 39 The Method printStackTrace 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"); } } Java Programming: Program Design Including Data Structures 40 The Method printStackTrace 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) Java Programming: Program Design Including Data Structures 41 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 Java Programming: Program Design Including Data Structures 42 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); Java Programming: Program Design Including Data Structures 43 Creating Your Own Exception Classes public class MyDivisionByZeroException extends Exception { public MyDivisionByZeroException() { super("Cannot divide by zero"); } public MyDivisionByZeroException(String strMessage) { super(strMessage); } } Java Programming: Program Design Including Data Structures 44 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 Java Programming: Program Design Including Data Structures 45 Event Handling (continued) class WindowAdapter: Implements interface WindowListener with empty bodies to methods class MouseAdapter: Implements interface MouseListener with empty bodies to methods Java Programming: Program Design Including Data Structures 46 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 Java Programming: Program Design Including Data Structures 47 Registering Listeners (continued) Java Programming: Program Design Including Data Structures 48 Registering Listeners (continued) Java Programming: Program Design Including Data Structures 49 Registering Listeners (continued) Java Programming: Program Design Including Data Structures 50 Programming Example: Calculator Java Programming: Program Design Including Data Structures 51 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 Java Programming: Program Design Including Data Structures 52 Chapter Summary (continued) Exception Hierarchy Classes Checked and unchecked exceptions The method printStackTrace Java Programming: Program Design Including Data Structures 53 Chapter Summary (continued) Exception handling techniques: Terminate program Fix error and continue Log error and continue Creating your own exception classes Event handling Java Programming: Program Design Including Data Structures 54