An Object Oriented Approach To Programming Logic And Designfourth Ed ✓ Solved

An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 10 Exception Handling Objectives In this chapter, you will learn about: Exceptions The limitations of traditional error handling Trying code and catching exceptions Throwing and catching multiple exceptions Using the finally block The advantages of exception handling Tracing exceptions through the call stack Creating your own exceptions 2 An Object-Oriented Approach to Programming Logic and Design Learning about Exceptions Exception Unexpected or error condition Occurs while program is running Unusual occurrence Examples Reading a nonexistent file Writing data to a full disk Entering invalid input data Dividing a value by zero Accessing an array using too-large subscript Calculating a value that exceeds the variable type’s limit 3 An Object-Oriented Approach to Programming Logic and Design Learning about Exceptions (cont’d) Exception handling Object-oriented techniques used to manage errors Group of methods Handles predictable errors Unpredictable errors Program cannot recover Exception handling not used Example: power failure 4 An Object-Oriented Approach to Programming Logic and Design 5 An Object-Oriented Approach to Programming Logic and Design Figure 10-1 illustrates a method that might divide by 0 Figure 10-2 demonstrates an exception message generated in Java when the program attempts to divide by 0 Figure 10-1 Figure 10-2 Learning about Exceptions (cont’d) Throwing an exception When method detects an exception Failure to handle exception Program terminates: abrupt and unforgiving Example in Figure 10-2 on previous slide Two approaches to handling exceptions Traditional manner Object-oriented manner provides more elegant (and safer) solutions 6 An Object-Oriented Approach to Programming Logic and Design Learning about Exceptions (cont’d) Examples of typical exceptions Attempt to divide by zero ArithmeticException or DivideByZeroException Attempt to store object of wrong data type in an array ArrayTypeMismatchException Attempt to access array with invalid subscript IndexOutOfRangeException Object reference does not correctly refer to created object NullReferenceException Arithmetic operation produces a greater value than assigned memory location can accommodate OverflowException 7 An Object-Oriented Approach to Programming Logic and Design Understanding the Limitations of Traditional Error Handling Error conditions existed before object-oriented methods Most common error-handling solution Make a decision before using a potentially error-causing value Example: Figure 10-3 displays error message if divisor is zero 8 An Object-Oriented Approach to Programming Logic and Design Figure 10-3 Understanding the Limitations of Traditional Error Handling (cont’d) Alternative solutions and issues Prompt user for new value Not useful if application retrieves file input Force divisor to one Not useful if produces wrong answer Drawbacks to traditional error-handling approaches Client using traditional error-handling method must accept method’s error-handling solution Inflexible May require multiple method versions 9 An Object-Oriented Approach to Programming Logic and Design Understanding the Limitations of Traditional Error Handling (cont’d) Exception handling More elegant solution for error-handling conditions Method detects errors, but client handles them Terminology “Try†code: tests a procedure that might cause an error “Throws an exceptionâ€: the code that detects an error sends an exception object to another method or to the operating system “Catches the exceptionâ€: a block of code receives the error and takes appropriate action 10 An Object-Oriented Approach to Programming Logic and Design Trying Code and Catching Exceptions try block Block of code you attempt to execute Can contain any number of statements or method calls If exception occurs, the remaining statements in try block do not execute catch block Code segment handling exception thrown by try block Need at least one following a try block 11 An Object-Oriented Approach to Programming Logic and Design Trying Code and Catching Exceptions (cont’d) throw statement Sends an exception object out of method to be handled elsewhere catch block Consists of keyword catch, followed by parentheses that contain exception type and identifier Statements that take action to handle error An endcatch statement (pseudocode) Can handle one exception type only Does not execute if no exception occurs 12 An Object-Oriented Approach to Programming Logic and Design 13 An Object-Oriented Approach to Programming Logic and Design General format of a method that includes a shaded try…catch pair Figure 10-4 Trying Code and Catching Exceptions (cont’d) Statements after catch block Execute normally whether or not there is an exception 14 An Object-Oriented Approach to Programming Logic and Design Method with a try block that attempts division Figure 10-5 Trying Code and Catching Exceptions (cont’d) Figure 10-5 (previous slide) throw operation occurred implicitly Programmer did not have to write a throw statement throw and catch operations reside in same method Similar to if...else pair that handles error throw and catch blocks may reside in separate methods Variable mistake in catch block Object of type Exception (not used) Exception class may contain a method called getMessage() that returns information about the cause of the error 15 An Object-Oriented Approach to Programming Logic and Design Throwing and Catching Multiple Exceptions try block can contain as many statements as needed First error-generating statement throws an exception Logic transfers to catch block Remaining try block statements unexecuted Can catch as many exceptions as desired Examined sequentially until match found Matching catch block executes Remaining catch blocks bypassed 16 An Object-Oriented Approach to Programming Logic and Design Figure An Object-Oriented Approach to Programming Logic and Design Program throws two types of exceptions: ArithmeticExceptions and IndexOutOfBoundsExceptions 18 An Object-Oriented Approach to Programming Logic and Design Each of the two catch blocks displays a different message Figure An Object-Oriented Approach to Programming Logic and Design Uses a single generic catch block to catch any type of exception Figure 10-8 Throwing and Catching Multiple Exceptions (cont’d) Unreachable code Statements never execute under any circumstance Also known as dead code To avoid unreachable code, order catch blocks correctly More specific exception types first More general types follow to catch remaining errors 20 An Object-Oriented Approach to Programming Logic and Design 21 An Object-Oriented Approach to Programming Logic and Design Class that contains an unreachable catch block Figure 10-9 Using the finally Block Used when specific actions are needed at the end of a try…catch sequence Always executes whether or not exception occurred 22 An Object-Oriented Approach to Programming Logic and Design try…catch sequence that uses a finally block Figure 10-10 Compare Figure 10-4 with Figure An Object-Oriented Approach to Programming Logic and Design Figure 10-4 Using the finally Block (cont’d) Comparison of Figures 10-10 and 10-4 When Figure 10-4 try code works without error Control passes to statements at end of method When try code fails and throws an exception Exception is caught catch block executes Control passes to statements at end of method Figure 10-4 statements at end may not execute Unplanned (uncaught) exception occurs Statements in try or catch block cause program termination 24 An Object-Oriented Approach to Programming Logic and Design Using the finally Block (cont’d) Unhandled exception Program execution stops immediately Exception sent to operating system Current method abandoned Including a finally block Assures finally statements will execute Before method abandoned Even if method concludes prematurely Often used to close data files 25 An Object-Oriented Approach to Programming Logic and Design Using the finally Block (cont’d) 26 An Object-Oriented Approach to Programming Logic and Design Pseudocode tries reading a file and handles an exception finally block closes the file Figure 10-11 Using the finally Block (cont’d) Code in finally block executes for each of the following outcomes of the try block try ends normally with no exceptions try throws FileException to the catch block, which executes and ends program Another exception causes try block to be abandoned prematurely and catch block does not execute 27 An Object-Oriented Approach to Programming Logic and Design Understanding the Advantages of Exception Handling (cont’d) Confusing Error-prone Figure 10-12: pseudocode representing traditional error checking 28 An Object-Oriented Approach to Programming Logic and Design Handling potential program errors before advent of object-oriented languages Figure 10-12 Understanding the Advantages of Exception Handling (cont’d) Handling potential program errors with object-oriented techniques 29 An Object-Oriented Approach to Programming Logic and Design Code is: Simpler Easier to read More flexible Reusable Figure 10-13: illustrates object-oriented approach Figure 10-13 Understanding the Advantages of Exception Handling (cont’d) Figure 10-14: Potential error in displayPrice() method: accepts argument as array subscript Subscript could be out of bounds Method might throw an exception 30 An Object-Oriented Approach to Programming Logic and Design Figure 10-14 Understanding the Advantages of Exception Handling (cont’d) Figures 10-15 and 10-16 show two ways to handle Figure 10-14 error exception An Object-Oriented Approach to Programming Logic and Design 31 Exception displays a price of

An Object Oriented Approach To Programming Logic And Designfourth Ed

An Object-Oriented Approach to Programming Logic and Design Fourth Edition Chapter 10 Exception Handling Objectives In this chapter, you will learn about: Exceptions The limitations of traditional error handling Trying code and catching exceptions Throwing and catching multiple exceptions Using the finally block The advantages of exception handling Tracing exceptions through the call stack Creating your own exceptions 2 An Object-Oriented Approach to Programming Logic and Design Learning about Exceptions Exception Unexpected or error condition Occurs while program is running Unusual occurrence Examples Reading a nonexistent file Writing data to a full disk Entering invalid input data Dividing a value by zero Accessing an array using too-large subscript Calculating a value that exceeds the variable type’s limit 3 An Object-Oriented Approach to Programming Logic and Design Learning about Exceptions (cont’d) Exception handling Object-oriented techniques used to manage errors Group of methods Handles predictable errors Unpredictable errors Program cannot recover Exception handling not used Example: power failure 4 An Object-Oriented Approach to Programming Logic and Design 5 An Object-Oriented Approach to Programming Logic and Design Figure 10-1 illustrates a method that might divide by 0 Figure 10-2 demonstrates an exception message generated in Java when the program attempts to divide by 0 Figure 10-1 Figure 10-2 Learning about Exceptions (cont’d) Throwing an exception When method detects an exception Failure to handle exception Program terminates: abrupt and unforgiving Example in Figure 10-2 on previous slide Two approaches to handling exceptions Traditional manner Object-oriented manner provides more elegant (and safer) solutions 6 An Object-Oriented Approach to Programming Logic and Design Learning about Exceptions (cont’d) Examples of typical exceptions Attempt to divide by zero ArithmeticException or DivideByZeroException Attempt to store object of wrong data type in an array ArrayTypeMismatchException Attempt to access array with invalid subscript IndexOutOfRangeException Object reference does not correctly refer to created object NullReferenceException Arithmetic operation produces a greater value than assigned memory location can accommodate OverflowException 7 An Object-Oriented Approach to Programming Logic and Design Understanding the Limitations of Traditional Error Handling Error conditions existed before object-oriented methods Most common error-handling solution Make a decision before using a potentially error-causing value Example: Figure 10-3 displays error message if divisor is zero 8 An Object-Oriented Approach to Programming Logic and Design Figure 10-3 Understanding the Limitations of Traditional Error Handling (cont’d) Alternative solutions and issues Prompt user for new value Not useful if application retrieves file input Force divisor to one Not useful if produces wrong answer Drawbacks to traditional error-handling approaches Client using traditional error-handling method must accept method’s error-handling solution Inflexible May require multiple method versions 9 An Object-Oriented Approach to Programming Logic and Design Understanding the Limitations of Traditional Error Handling (cont’d) Exception handling More elegant solution for error-handling conditions Method detects errors, but client handles them Terminology “Try†code: tests a procedure that might cause an error “Throws an exceptionâ€: the code that detects an error sends an exception object to another method or to the operating system “Catches the exceptionâ€: a block of code receives the error and takes appropriate action 10 An Object-Oriented Approach to Programming Logic and Design Trying Code and Catching Exceptions try block Block of code you attempt to execute Can contain any number of statements or method calls If exception occurs, the remaining statements in try block do not execute catch block Code segment handling exception thrown by try block Need at least one following a try block 11 An Object-Oriented Approach to Programming Logic and Design Trying Code and Catching Exceptions (cont’d) throw statement Sends an exception object out of method to be handled elsewhere catch block Consists of keyword catch, followed by parentheses that contain exception type and identifier Statements that take action to handle error An endcatch statement (pseudocode) Can handle one exception type only Does not execute if no exception occurs 12 An Object-Oriented Approach to Programming Logic and Design 13 An Object-Oriented Approach to Programming Logic and Design General format of a method that includes a shaded try…catch pair Figure 10-4 Trying Code and Catching Exceptions (cont’d) Statements after catch block Execute normally whether or not there is an exception 14 An Object-Oriented Approach to Programming Logic and Design Method with a try block that attempts division Figure 10-5 Trying Code and Catching Exceptions (cont’d) Figure 10-5 (previous slide) throw operation occurred implicitly Programmer did not have to write a throw statement throw and catch operations reside in same method Similar to if...else pair that handles error throw and catch blocks may reside in separate methods Variable mistake in catch block Object of type Exception (not used) Exception class may contain a method called getMessage() that returns information about the cause of the error 15 An Object-Oriented Approach to Programming Logic and Design Throwing and Catching Multiple Exceptions try block can contain as many statements as needed First error-generating statement throws an exception Logic transfers to catch block Remaining try block statements unexecuted Can catch as many exceptions as desired Examined sequentially until match found Matching catch block executes Remaining catch blocks bypassed 16 An Object-Oriented Approach to Programming Logic and Design Figure An Object-Oriented Approach to Programming Logic and Design Program throws two types of exceptions: ArithmeticExceptions and IndexOutOfBoundsExceptions 18 An Object-Oriented Approach to Programming Logic and Design Each of the two catch blocks displays a different message Figure An Object-Oriented Approach to Programming Logic and Design Uses a single generic catch block to catch any type of exception Figure 10-8 Throwing and Catching Multiple Exceptions (cont’d) Unreachable code Statements never execute under any circumstance Also known as dead code To avoid unreachable code, order catch blocks correctly More specific exception types first More general types follow to catch remaining errors 20 An Object-Oriented Approach to Programming Logic and Design 21 An Object-Oriented Approach to Programming Logic and Design Class that contains an unreachable catch block Figure 10-9 Using the finally Block Used when specific actions are needed at the end of a try…catch sequence Always executes whether or not exception occurred 22 An Object-Oriented Approach to Programming Logic and Design try…catch sequence that uses a finally block Figure 10-10 Compare Figure 10-4 with Figure An Object-Oriented Approach to Programming Logic and Design Figure 10-4 Using the finally Block (cont’d) Comparison of Figures 10-10 and 10-4 When Figure 10-4 try code works without error Control passes to statements at end of method When try code fails and throws an exception Exception is caught catch block executes Control passes to statements at end of method Figure 10-4 statements at end may not execute Unplanned (uncaught) exception occurs Statements in try or catch block cause program termination 24 An Object-Oriented Approach to Programming Logic and Design Using the finally Block (cont’d) Unhandled exception Program execution stops immediately Exception sent to operating system Current method abandoned Including a finally block Assures finally statements will execute Before method abandoned Even if method concludes prematurely Often used to close data files 25 An Object-Oriented Approach to Programming Logic and Design Using the finally Block (cont’d) 26 An Object-Oriented Approach to Programming Logic and Design Pseudocode tries reading a file and handles an exception finally block closes the file Figure 10-11 Using the finally Block (cont’d) Code in finally block executes for each of the following outcomes of the try block try ends normally with no exceptions try throws FileException to the catch block, which executes and ends program Another exception causes try block to be abandoned prematurely and catch block does not execute 27 An Object-Oriented Approach to Programming Logic and Design Understanding the Advantages of Exception Handling (cont’d) Confusing Error-prone Figure 10-12: pseudocode representing traditional error checking 28 An Object-Oriented Approach to Programming Logic and Design Handling potential program errors before advent of object-oriented languages Figure 10-12 Understanding the Advantages of Exception Handling (cont’d) Handling potential program errors with object-oriented techniques 29 An Object-Oriented Approach to Programming Logic and Design Code is: Simpler Easier to read More flexible Reusable Figure 10-13: illustrates object-oriented approach Figure 10-13 Understanding the Advantages of Exception Handling (cont’d) Figure 10-14: Potential error in displayPrice() method: accepts argument as array subscript Subscript could be out of bounds Method might throw an exception 30 An Object-Oriented Approach to Programming Logic and Design Figure 10-14 Understanding the Advantages of Exception Handling (cont’d) Figures 10-15 and 10-16 show two ways to handle Figure 10-14 error exception An Object-Oriented Approach to Programming Logic and Design 31 Exception displays a price of $0 Figure 10-15 Figure 10-16 Understanding the Advantages of Exception Handling (cont’d) An Object-Oriented Approach to Programming Logic and Design 32 Exception includes an input dialog box to prompt user for a new item number until it is within range Tracing Exceptions through the Call Stack When one method calls another Operating system keeps track of calling method Program control returns to calling method once method completes Call stack Memory location Computer stores list of method memory locations Where system must return after call completed 33 An Object-Oriented Approach to Programming Logic and Design Tracing Exceptions through the Call Stack (cont’d) 34 An Object-Oriented Approach to Programming Logic and Design When method throws an exception If same method does not catch it, exception thrown to next method up the call stack Demonstrates how call stack works Figure 10-17 Tracing Exceptions through the Call Stack (cont’d) If no method in chain handles the exception Given to operating system Passing exceptions through chain of calling methods Advantages Can handle exceptions wherever most appropriate (includes operating system) Can use printStackTrace(): debugging tool that displays a list of methods in the call stack to determine location of exception Disadvantages Difficulty locating original source of the exception (if program uses several classes) 35 An Object-Oriented Approach to Programming Logic and Design A Case Study: Tracing the Source of an Exception See flaw (shaded) in Figure 10-18 Subscript set to 2 instead of 1 for higher tax rate Out of bounds error occurs if subscript used with taxRate array 36 An Object-Oriented Approach to Programming Logic and Design Figure 10-18 A Case Study: Tracing the Source of an Exception (cont’d) Assume Tax class is a purchased class (black box) Figure 10-19 shows a sample Prices class 37 An Object-Oriented Approach to Programming Logic and Design Figure 10-19 A Case Study: Tracing the Source of an Exception (cont’d) Figure 10-20: New application (next slide) Asks user to enter item number Passes item to Prices.displayPrice() Tries item entry and catches exception Executing program using valid item number Receive “Error!†message from catch block To discover what caused the message, replace catch block statement with mistake.printStackTrace() 38 An Object-Oriented Approach to Programming Logic and Design A Case Study: Tracing the Source of an Exception (cont’d) 39 An Object-Oriented Approach to Programming Logic and Design Prompts user for an item number and passes it to Prices.displayPrice() Figure 10-20 A Case Study: Tracing the Source of an Exception (cont’d) 40 An Object-Oriented Approach to Programming Logic and Design Figure 10-21 shows output from C# execution Figure 10-21 Creating Your Own Exceptions Object-oriented languages provide built-in Exception types Cannot predict every possible condition Programmer may create application-specific exceptions Usually extend a built-in Exception class 41 An Object-Oriented Approach to Programming Logic and Design Creating Your Own Exceptions (cont’d) 42 An Object-Oriented Approach to Programming Logic and Design Pseudocode in Figure 10-22 Creates HighBalanceException Assumes that the parent class contains a setMessage() method Constructor contains a single statement to set error message Figure 10-22 Figure 10-23 Creating Your Own Exceptions (cont’d) 43 An Object-Oriented Approach to Programming Logic and Design CustomerAccount class using HighBalanceException If account balance exceeds limit, an instance of the class is created and thrown Figure 10-24 Creating Your Own Exceptions (cont’d) 44 An Object-Oriented Approach to Programming Logic and Design Application constructs a CustomerAccount object within a try block Creating Your Own Exceptions (cont’d) Do not create excessive number of special Exception types Add complexity for other programmers Advantages of specialized Exception classes Provides elegant handling of error situations Separates error code from normal code Passes errors up the stack and traces them Client classes handle exceptions in manner most suitable for the application 45 An Object-Oriented Approach to Programming Logic and Design Summary Exception: Unexpected or error condition Exception handling Techniques used to manage actions following an exception try block Wraps code that might cause an exception catch block Set of code statements to handle specific error types Multiple catch blocks Handle different error types 46 An Object-Oriented Approach to Programming Logic and Design Summary (cont’d) finally block Statements always executed after try block Used to perform cleanup tasks Object-oriented exception-handling techniques Provide flexibility in handling exceptions Call stack Memory location storing method locations list Built-in exceptions Cannot predict every condition Can write your own exceptions 47 An Object-Oriented Approach to Programming Logic and Design