java programming fourth edition - computer scienceszhou/351/ch15.pdf · 2009-12-01 · java...

46
Java Programming Fourth Edition Chapter 15 Exception Handling

Upload: others

Post on 15-Mar-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming Fourth Edition

Chapter 15 Exception Handling

Page 2: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 2

Objectives

•  Learn about exceptions •  Understand the limitations of traditional error

handling •  Try code and catch Exceptions •  Throw and catch multiple Exceptions •  Use the finally block

Page 3: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 3

Objectives (continued)

•  Understand the advantages of exception handling •  Specify the Exceptions a method can throw •  Trace Exceptions through the call stack •  Create your own Exceptions •  Use an assertion

Page 4: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 4

Learning About Exceptions

•  Exceptions –  Unexpected or error condition –  Not usual occurrences –  Causes

•  Call to file that does not exist •  Try to write to full disk •  User enters invalid data •  Program attempts to divide value by 0

Page 5: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 5

Learning About Exceptions (continued)

•  Exception handling –  Object-oriented techniques used to manage Exception errors

•  Exceptions –  Objects –  Descend from Throwable class

Page 6: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 6

Learning About Exceptions (continued)

•  Error class –  Represents serious errors from which program

usually cannot recover –  Error condition

•  Program runs out of memory •  Program cannot locate required class

Page 7: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 7

Learning About Exceptions (continued)

•  Exception class –  Less serious errors –  Unusual conditions –  Program can recover

•  Exception class errors –  Invalid array subscript –  Performing illegal arithmetic operations

Page 8: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 8

Learning About Exceptions (continued)

•  Throwable object Error or Exception –  Examine message after error occurs –  Exception message

•  Error preventable by using specific code within program

–  Error message •  Program terminates •  No program code can prevent

Page 9: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 9

The MathMistake class

Page 10: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 10

Output of the Attempted Execution of the MathMistake Application

Page 11: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 11

Understanding the Limitations of Traditional Error Handling

•  System.exit() method –  Return 1 if error is causing program termination –  Or 0 if program ending normally –  Circumvents displaying error message

•  Fault-tolerant –  Designed to continue to operate when some part of

system fails •  Robustness

–  Represents degree to which system is resilient to stress

Page 12: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 12

Trying Code and Catching Exceptions

•  try block –  Segment of code in which something might go wrong –  Attempts to execute

•  Acknowledging exception might occur

•  try block includes: –  Keyword try –  Opening and closing curly brace –  Executable statements

•  Which might cause exception

Page 13: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 13

Trying Code and Catching Exceptions (continued)

•  catch block –  Segment of code –  Immediately follows try block –  Handles exception thrown by try block preceding it –  Can “catch”

•  Object of type Exception •  Or Exception child class

•  throw statement –  Sends Exception out of method –  It can be handled elsewhere

Page 14: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 14

Trying Code and Catching Exceptions (continued)

•  catch block includes: –  Keyword catch –  Opening and closing parentheses

• Exception type –  Opening and closing curly braces

•  Statements to handle error condition

Page 15: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 15

Format of try...catch Pair

Page 16: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 16

Trying Code and Catching Exceptions (continued)

•  Don’t confuse catch block and catch() method –  catch() method

•  Returns some type of Exception –  catch block

•  Has no return type •  Can’t call it directly

Page 17: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 17

The MathMistakeCaught Application

Page 18: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 18

Throwing and Catching Multiple Exceptions

•  Can place multiple statements within try block –  Only first error-generating statement throws Exception

•  Catch multiple Exceptions –  Examined in sequence

•  Until match found for Exception type –  Matching catch block executes –  Each remaining catch block bypassed

Page 19: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 19

The TwoMistakes Class

Page 20: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 20

The TwoMistakes2 Class

Page 21: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 21

Throwing and Catching Multiple Exceptions (continued)

•  “Catch-all” block –  Accepts more generic Exception argument type catch(Exception e)

•  Unreachable code –  Program statements that can never execute under

any circumstances •  Poor style for method to throw more than three or

four types

Page 22: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 22

Using the finally Block

•  finally block –  Use for actions you must perform at end of try...catch sequence

–  Use finally block to perform cleanup tasks –  Executes regardless of whether preceding try block

identifies an Exception

Page 23: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 23

Format of try...catch...finally Sequence

Page 24: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 24

Using the finally Block (continued)

•  When try code fails –  Throws Exception –  Exception caught –  catch block executes

•  Control passes to statements at end of method

Page 25: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 25

Using the finally Block (continued)

•  Reasons final set of statements might never execute –  Unplanned Exception might occur –  try or catch block might contain System.exit(); statement

•  try block might throw Exception for which you did not provide catch block –  Program execution stops immediately –  Exception sent to operating system for handling –  Current method abandoned

Page 26: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 26

Using the finally Block (continued)

•  When finally block used –  finally statements execute before method

abandoned •  Finally block executes no matter what outcome

of try block occurs –  try ends normally –  catch executes –  Exception causes method to abandon prematurely

Page 27: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 27

Understanding the Advantages of Exception Handling

•  Before object-oriented programming languages –  Errors handled with confusing, error-prone methods –  When any method fails

•  Program sets appropriate error code –  Difficult to follow

•  Application’s purpose and intended outcome lost in maze of if statements

•  Coding mistakes because of complicated nesting

Page 28: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 28

Pseudocode Representing Traditional Error Checking

Page 29: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 29

Understanding the Advantages of Exception Handling (continued)

•  Java’s object-oriented, error-handling technique –  Statements of program that do “real” work –  Placed together where logic is easy to follow –  Unusual, exceptional events

•  Grouped •  Moved out of the way

•  Advantage to object-oriented exception handling –  Flexibility in handling of error situations

Page 30: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 30

Pseudocode Representing Object-Oriented Exception Handling

Page 31: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 31

Understanding the Advantages of Exception Handling (continued)

•  Appropriately deal with Exceptions as you decide how to handle them

•  If method throws Exception –  Must also use keyword throws followed by Exception type in method header

Page 32: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 32

The PriceList Class

Page 33: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 33

Specifying the Exceptions a Method Can Throw

•  Every Java method has potential to throw an Exception –  For most Java methods, do not use throws clause –  Let Java handle any Exception by shutting down

program –  Most exceptions never have to be explicitly thrown or

caught

Page 34: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 34

Specifying the Exceptions a Method Can Throw (continued)

•  Checked exceptions –  Programmers should anticipate –  Programs should be able to recover

•  Unchecked exceptions –  Errors

•  External to program –  Runtime exceptions

•  Internal to program •  Logic errors

Page 35: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 35

Specifying the Exceptions a Method Can Throw (continued)

•  Throw checked exception –  Catch it –  Or declare exception in method header’s throws

clause •  RuntimeException class

–  Represent unplanned exceptions that occur during program’s execution

–  Can occur anywhere in program –  Can be numerous in typical program

Page 36: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 36

Specifying the Exceptions a Method Can Throw (continued)

•  Must know to use method to full potential –  Method’s name –  Method’s return type –  Type and number of arguments method requires –  Type and number of Exceptions method throws

Page 37: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 37

Tracing Exceptions Through the Call Stack

•  Call stack –  Memory location where computer stores list of

method locations to which system must return •  When method throws Exception

–  Exception thrown to next method up call stack –  Allows methods to handle Exceptions wherever

programmer has decided it is most appropriate •  Including allowing operating system to handle error

Page 38: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 38

Cycling Through the Call Stack

Page 39: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 39

Tracing Exceptions Through the Call Stack (continued)

•  printStackTrace() method –  Display list of methods in call stack –  Determine location of Exception –  Do not place in finished program

•  Most useful for diagnosing problems

Page 40: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 40

Creating Your Own Exceptions

•  Java provides over 40 categories of Exceptions •  Java allows you to create your own Exceptions

–  Extend a subclass of Throwable •  Exception class constructors

Exception() Exception(String message)

Exception(String message, Throwable cause)

Exception(Throwable cause)

Page 41: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 41

Using Assertions

•  Assertion –  Java language feature –  Detect logic errors –  Debug programs

•  assert statement –  Create assertion assert booleanExpression : optionalErrorMessage

–  Boolean expression should always be true if program working correctly

Page 42: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 42

Using Assertions (continued)

•  AssertionError thrown –  When condition false

•  Enable assertion –  Compile program using -source 1.6 option –  Execute program using -ea option

Page 43: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 43

You Do It

•  Catching an Exception and using getMessage()

•  Generating a NumberFormatException •  Adding NumberFormatException handling

capabilities to an application •  Creating a class that automatically throws Exceptions

•  Creating a class that passes on an Exception

Page 44: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 44

You Do It (continued)

•  Creating an application that can catch Exceptions

•  Extending a class that throws Exceptions •  Using printStackTrace() method •  Creating an Exception class •  Using an Exception you created

Page 45: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 45

Summary

•  Exception –  Unexpected or error condition

•  Exception handling –  Object-oriented techniques to manage errors

•  Basic classes of errors Error and Exception •  Exception handling code

–  try block –  catch block –  finally block

Page 46: Java Programming Fourth Edition - Computer Scienceszhou/351/ch15.pdf · 2009-12-01 · Java Programming, Fourth Edition 25 Using the finally Block (continued) • Reasons final set

Java Programming, Fourth Edition 46

Summary (continued)

•  Use clause throws <name>Exception after method header –  Indicate type of Exception that might be thrown

•  Call stack –  List of method locations where system must return

•  Java provides over 40 categories of Exceptions –  Create your own Exceptions

•  Assertion –  State condition that should be true –  Java throws AssertionError when it is not