Chapter 10 - MCST-CS

Download Report

Transcript Chapter 10 - MCST-CS

Java Programming: Guided
Learning with Early Objects
Chapter 10
Exception Handling and Events
Objectives
• Learn what an exception is
• Learn how to use a try/catch block to handle
exceptions
• Become acquainted with the hierarchy of
exception classes
• Learn about checked and unchecked
exceptions
• Learn how to handle exceptions within a
program
Java Programming: Guided Learning with Early Objects
2
Objectives (continued)
• Discover how to rethrow and throw an
exception
• Become familiar with the adapter classes
• Learn how to handle key and mouse events
• Learn how to use the Timer class
Java Programming: Guided Learning with Early Objects
3
Handling Exceptions within a Program
• Recall when you try to input incompatible data
into a variable, the program terminates
– Generates exception
• Example:
– Divide by zero generates
ArithmeticException: / by zero
• Exception could be prevented by checking that
divisor is not zero before dividing
– Add an if statement
Java Programming: Guided Learning with Early Objects
4
Java’s Mechanism of Exception
Handling
• Using if statements may not be appropriate or
convenient to handle exceptions
– Put exception code in one place
– Easier to modify exception-handling code
• When exception occurs, object of exception
class created
– Java provides several exception classes
• class Exception is the superclass to all
exception classes in Java
Java Programming: Guided Learning with Early Objects
5
try/catch/finally Block
• try block:
– Contains statements that might generate
exception
– Contains statements that should not be
executed if exception occurs
– Followed by zero or more catch blocks
• catch block:
– Specifies type of exception to catch
– Contains an exception handler
• finally block: code always executes
Java Programming: Guided Learning with Early Objects
6
try/catch/finally Block
(continued)
• Syntax:
try {
//statements
}
catch (ExceptionClassName1 objRef1) {
// exception handler code
}
…
catch (ExceptionClassNameN objRefN) {
// exception handler code
}
finally {
// statements }
Java Programming: Guided Learning with Early Objects
7
try/catch/finally Block
(continued)
• If no exception thrown in try block, all catch
blocks ignored
– Execution resumes after last catch block
• If exception thrown in try block, remaining
statements ignored
– Program searches catch blocks in order,
looking for a matching catch block
• finally block executes regardless of
exception
– finally block is optional
Java Programming: Guided Learning with Early Objects
8
Order of catch Blocks
• Can catch all exceptions of a specific type or all
types of exceptions
• Heading of catch block specifies types of
exceptions it handles
• If heading declares exception using class
Exception, catch block catches all types
• When exception caught by catch block,
remaining catch blocks ignored
• Order is important
Java Programming: Guided Learning with Early Objects
9
Using try/catch Blocks in a Program
• Common error while inputting numeric data is
typing nonnumeric character
– Methods nextInt and nextDouble throw
InputMismatchException
• Division by zero with integer values generates
ArithmeticException
• When exception occurs, program throws an
object of a specific exception class
Java Programming: Guided Learning with Early Objects
10
Java Exception Hierarchy
• Every class can potentially cause exceptions
• class Throwable:
– Derived from class Object
– Superclass of class Exception
• Methods getMessage, printStackTrace,
and toString are public
– Inherited by subclasses of class Throwable
Java Programming: Guided Learning with Early Objects
11
Table 10-1 Commonly Used Constructors and Methods of the class
Throwable
Java Programming: Guided Learning with Early Objects
12
Figure 10-2 The class Exception and some of its subclasses from the
package java.lang
Java Programming: Guided Learning with Early Objects
13
Figure 10-3 The class Exception and some of its subclasses from the
package java.util
Java Programming: Guided Learning with Early Objects
14
Figure 10-4 The class IOException and some of its subclasses from
the package java.io
Java Programming: Guided Learning with Early Objects
15
Java’s Exception Classes
• class Exception is the superclass of Java
exception-handling classes
• Java categorizes exceptions into separate
classes
• Exception classes placed in the package that
contains the methods that throw them
• Method getMessage returns string containing
detailed message stored in exception object
Java Programming: Guided Learning with Early Objects
16
Table 10-2 class Exception and its Constructors
Java Programming: Guided Learning with Early Objects
17
Table 10-3 Commonly Used Exception Classes
Java Programming: Guided Learning with Early Objects
18
Table 10-3 Commonly Used Exception Classes (continued)
Java Programming: Guided Learning with Early Objects
19
Table 10-4 Exceptions Thrown by the Method nextInt
Table 10-5 Exceptions Thrown by the Method nextDouble
Java Programming: Guided Learning with Early Objects
20
Table 10-6 class InputMistmatchException and its Constructors
Java Programming: Guided Learning with Early Objects
21
Table 10-7 Exceptions Thrown by the Method next
Table 10-8 Exceptions Thrown by the Method nextLine
Java Programming: Guided Learning with Early Objects
22
Table 10-9 Exceptions Thrown by the Method hasNext
Table 10-10 Exceptions Thrown by the Methods of the class Integer
Java Programming: Guided Learning with Early Objects
23
Table 10-11 Exceptions Thrown by the Methods of the class Double
Java Programming: Guided Learning with Early Objects
24
Table 10-12 Exceptions Thrown by the Methods of the class String
Java Programming: Guided Learning with Early Objects
25
Checked and Unchecked Exceptions
• Checked exceptions:
– Any exception the compiler can recognize
– Example: FileNotFoundException
• Compiler encounters statements to open a file
– Reduces number of statements not properly
handled
• Unchecked exceptions:
– Any exception the compiler cannot recognize
– Examples: division by zero, index out of bounds
– Programmer checks for these exceptions
Java Programming: Guided Learning with Early Objects
26
More Examples of Exception Handling
• Java accepts only strings as input in dialog
boxes and text fields
• Methods parseInt, parseFloat, and
parseDouble may terminate with number
format error
– Throw NumberFormatException if string does
not contain a number
Java Programming: Guided Learning with Early Objects
27
class Exception and the Operator
instanceof
• Recall that reference variable of superclass
type can point to objects of its subclasses
• Operator instanceof determines if reference
variable points to object of particular class
• Used to combine two catch blocks
Java Programming: Guided Learning with Early Objects
28
Rethrowing or Throwing an Exception
• When exception occurs in try block, control
passes to first matching catch block
• catch block may:
– Completely handle the exception
– Partially process the exception
• Rethrows same exception
• Throws another exception for calling environment
to handle the exception
– Rethrow same exception for calling environment
to handle
Java Programming: Guided Learning with Early Objects
29
Rethrowing or Throwing an Exception
(continued)
• Rethrowing an exception or throwing an
exception handled by throw statement
• throw statement throws either checked or
unchecked exception
• Exceptions are objects of a specific type
• Syntax to rethrow an exception:
throw exceptionReference
• General throw syntax:
throw new ExceptionClassName(messageStr);
Java Programming: Guided Learning with Early Objects
30
Method printStackTrace
• Java keeps track of method call sequence
• class Exception subclass of class
Throwable
• class Throwable contains public method
printStackTrace
• Use method printStackTrace to determine
the order in which methods were called
– Determine where exception handled
Java Programming: Guided Learning with Early Objects
31
Exception-Handling Techniques
• When exception occurs, programmer has three
choices:
– Terminate the program
– Fix the error and continue
– Log the error and continue
Java Programming: Guided Learning with Early Objects
32
Terminate the Program
• In some cases, best to terminate when
exception occurs
• Example:
– Input data from file
– File not found
– No point in continuing
Java Programming: Guided Learning with Early Objects
33
Fix the Error and Continue
• Handle the exception, let the program continue
• Example:
–
–
–
–
Prompt the user for a file name
User misspells file name
File not found
Reprompt the user
Java Programming: Guided Learning with Early Objects
34
Log the Error and Continue
• Sometimes terminating the program is unsafe
or unnecessary
– Prefer to record the exception and continue
• Example:
– Analyzing airline-ticketing transactions
– Large volume of transactions each day
– Analysis program would take too long if it fixed
every error
– Program records exceptions and continues
processing transactions
Java Programming: Guided Learning with Early Objects
35
Creating Your Own Exception Classes
• Java does not provide exception-handling
classes for every possible circumstance
• Must throw programmer-defined exceptions
using throw statement
• Define classes by extending the class
Exception or a subclass
• Typically, constructors are the only methods
included when defining exception class
• Programmer-defined classes inherit members
of superclasses
Java Programming: Guided Learning with Early Objects
36
GUI Adaptor Classes, Events, and the
Timer Class (Optional)
• Java provides interfaces to handle events
– Cannot instantiate object of an interface
• Create an object to handle an event, and create
a class that implements appropriate interface
– ActionListener handles action events
– WindowListener handles window events
• Class may implement more than one interface
Java Programming: Guided Learning with Early Objects
37
Key Events
• Three types of key events:
– keyPressed
– keyReleased
– keyTyped
• keyTyped: generated when alphanumeric key
pressed
• keyPressed: generated when meta key
pressed
• keyReleased: generated when any key
released
Java Programming: Guided Learning with Early Objects
38
Table 10-14 Events Generated by key Components
Java Programming: Guided Learning with Early Objects
39
Mouse Events
• Mouse generates seven events:
– mouseClicked
– mouseEntered
– mouseExited
– mousePressed
– mouseReleased
– mouseDragged
– mouseMoved
• Events handled by MouseListener and
MouseMotionListener
Java Programming: Guided Learning with Early Objects
40
Table 10-15 Events Generated by mouse Components
Java Programming: Guided Learning with Early Objects
41
Timer Class
• Control activities over time
• No visual representation
– Cannot be displayed on screen
• Generate action events at specific time
intervals
• Constructor sets delay time between events
– Second parameter specifies action event to be
generated at time interval
Java Programming: Guided Learning with Early Objects
42
Table 10-16 The Constructor and Commonly Used Methods of class Timer
Java Programming: Guided Learning with Early Objects
43
Table 10-16 The Constructor and Commonly Used Methods of class
Timer (continued)
Java Programming: Guided Learning with Early Objects
44
Figure 10-10 An interface for showing the position of a ball
Java Programming: Guided Learning with Early Objects
45
Summary
• Exception is an object of the exception class
– Java provides exception classes
– Programmer creates own exception classes
• try/catch/finally block handles
exceptions in a program
• Statements that may generate exception placed
in try block
– try block also contains statements that should
not be executed in presence of exception
Java Programming: Guided Learning with Early Objects
46
Summary (continued)
• try block followed by zero or more catch
blocks
• catch block specifies type of exception caught
and contains exception handler
• Last catch block may be followed by finally
block
• finally block contains code that executes
regardless of exception
• If try block not followed by catch block, must
have finally block
Java Programming: Guided Learning with Early Objects
47
Summary (continued)
• catch block catches all exceptions or specific
type of exceptions
– Heading of catch block specifies the type of
exception it handles
• class Exception is superclass of all
exception-handling classes
– Contained in package java.lang
• Exception classes placed in package containing
the methods that throw them
Java Programming: Guided Learning with Early Objects
48
Summary (continued)
• Checked exception: any exception recognized
by the compiler
• Unchecked exception: any exception not
recognized by the compiler
• Programmer-defined exception classes extend
class Exception
• class WindowAdapter implements
interface WindowListener
– Provides empty bodies to methods
Java Programming: Guided Learning with Early Objects
49
Summary (continued)
• Register a window listener using method
addWindowListener
– A WindowListener object is passed as a
parameter to addWindowListener
• Timer class objects control activities over time
– No visual representation
– Cannot be displayed on screen
– Generate action events at specific time intervals
Java Programming: Guided Learning with Early Objects
50