Exception Handling - PowerPoint PPT Presentation

About This Presentation
Title:

Exception Handling

Description:

An uncaught exception in a (non-GUI) application will end the program. An uncaught exception in a GUI program (either a JFrame GUI or an applet) will ... – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 47
Provided by: rober854
Category:

less

Transcript and Presenter's Notes

Title: Exception Handling


1
Exception Handling
  • Chapter 8

2
Reminders
  • Project 5 due Oct 20 _at_ 1030 pm
  • Project 3 regrades due by midnight tonight
  • Discussion groups now twice a week (7-9 pm M in
    CS G066, W in Phys 11)

3
Exam 2
  • Tuesday, October 25
  • 700 800 PM
  • Physics 112
  • Covers chapters 5-9 (and material from 1-4 as
    well)
  • Same format as exam 1
  • 20 MC
  • 5 programming

4
Introduction
  • A program can be written assuming that nothing
    unusual or incorrect will happen.
  • The user will always enter an integer when
    prompted to do so.
  • There will always be a nonempty list for a
    program that takes an entry from the list.
  • The file containing the needed information will
    always exist.
  • Unfortunately, it isnt always so.

5
Exception Handling
  • Either your code or Java signals when something
    unusual happens.
  • The signaling process is called throwing an
    exception.
  • Somewhere in your program, you can place code to
    handle the exception.

6
Exceptions in Java Example, cont.
  • simple example, cont.
  • But what if there is no milk?
  • An attempt to divide the number of donuts by the
    number of glasses of milk will result in an
    attempt to divide by zero.
  • This would be an utter (udder?) disaster, known
    in Java as an exception.

7
Exceptions in Java Example, cont.
  • In Java, it is possible to test for this unusual
    situation using an if-else statement, for example.

8
(No Transcript)
9
Exceptions in Java Example, cont.
10
Exceptions in Java Example, cont.
  • In Java, it is also possible to throw an
    exception.

11
(No Transcript)
12
Exceptions in Java Example, cont.
13
Defining Exception Classes
  • You can define your own exception classes, but
    they must be derived from an existing exception
    class.
  • Constructors are the most important, and often
    the only methods (except for methods inherited
    from the base class).

14
Defining Exception Classes, cont.
  • class DivideByZeroException

15
(No Transcript)
16
Java Tip Preserve getMessage
  • For all predefined exception classes, method
    getMessage returns either
  • the string that is passed as an argument to the
    constructor or
  • a default string if no argument is passed to the
    constructor.
  • The behavior of method getMessage should be
    preserved in any exception class you define.

17
Java Tip Preserve getMessage, cont.
  • This is done by including a string parameter that
    begins with a call to super.
  • public MyException(String message)
  • super(message)
  • More_Code_If_Appropriate

18
Java Tip Preserve getMessage, cont.
  • Also include a default constructor.
  • public MyException()
  • super(MyException thrown)
  • More_Code_If_Appropriate

19
Programming Tip When to Define an Exception Class
  • In general, define an exception class if you are
    going to insert a throw statement in your code.
  • This permits catch blocks to distinguish between
    your exceptions and exceptions thrown by
    predefined methods.

20
Guidelines
  • Use class Exception as the base class unless
    there is a compelling reason to do otherwise.
  • Define at least two constructors. Typically, no
    other methods are needed.
  • Begin each constructor definition with a call to
    the constructor of the base class.

21
Declaring Exceptions (Passing the Buck)
  • Sometimes is it appropriate to handle an
    exception other than in the method where the
    exception occurred.
  • For example, it might be better to handle the
    exception in the method that called the method
    that called the method that threw the exception

22
Declaring Exceptions, cont.
  • If a method can throw an exception but does not
    catch it, it must alert the programmer to the
    possibility of an exception by including a throws
    clause.
  • Example
  • public void someMethod()
  • throws DivideByZeroException

23
Accounting for Exceptions
  • An exception can be caught in a catch block
    within a method definition.
  • Alternatively, the possibility of an exception
    can be declared at the start of the method
    definition by placing the exception-class name in
    a throws clause.
  • These two approaches can be mixed in a method,
    catching some exceptions and declaring others in
    a throws clause.

24
Accounting for Exceptions, cont.
  • If method_A uses a throws clause instead of
    handling an exception and method_B calls
    method_A, then method_B either must handle the
    exception or must also include a throws clause.

25
(No Transcript)
26
Accounting for Exceptions, cont.
  • A throws clause can include more than one
    exception type.
  • example
  • public int someMethod()throws
  • IOException, DivideByZeroException

27
Accounting for Exceptions, cont.
  • Some method in the calling hierarchy should
    handle the exception.
  • If an exception is thrown, but never caught,
    either the program terminates or its behavior
    becomes unreliable.

28
Exceptions That Need Not Be Caught
  • Some exceptions do not need to be accounted for
    in any way.
  • (Perhaps these are the exceptions that prove the
    rule about needing to account for exceptions.)
  • Exceptions that do not need to be accounted for
    result from errors and usually are thrown by
    methods in predefined classes.

29
throws Clauses in Derived Classes
  • When a method is redefined in a derived class,
    the redefined method cannot contain any exception
    classes that are not in the throws clause of the
    same method in the base class (though the derived
    class can list fewer exceptions in its throws
    clause).
  • Any exceptions thrown in the derived class must
    be caught or thrown by the base class.

30
Multiple Throws and Catches
  • A try block can throw any number of different
    types of exceptions.
  • Each catch block can catch only one type of
    exception.
  • Multiple catch blocks after a try block can catch
    multiple types of exceptions.

31
(No Transcript)
32
Java Tip Catch the More Specific Exceptions First
  • catch blocks are examined in order.
  • The first matching catch block is executed.
  • More specific exceptions should precede less
    specific exceptions, i.e. exceptions lower in the
    exception hierarchy should come before exceptions
    higher in the exception hierarchy.

33
Keep It Simple
  • Attempt to modify a program or class definition
    so that it does not need a throw statement.
  • In general, use exceptions sparingly.
  • If the way the exception is handled depends on
    the calling method, let the calling method handle
    the exception.
  • Consider throwing the exception and catching the
    exception in separate methods.

34
Keep It Simple, cont.
  • public void methodB()
  • ...
  • try
  • ...
  • methodA()
  • ...
  • catch (MyException e)
  • ...

35
The finally Block
  • A finally block can be added after a try block
    and its catch blocks.
  • The finally block is executed
  • if the try block throws no exceptions
  • if the try block throws an exception which is
    caught by a catch block
  • if an exception is thrown but not caught
  • i.e. it is always executed.

36
The finally Block, cont.
  • syntax
  • try
  • catch Block(s)
  • finally

37
  • try
  • doMethod(test)
  • catch (Exception e)
  • System.out.println(Exception)
  • return
  • finally
  • System.out.println(Done)
  • return
  • If doMethod() throws an exception, what is the
    output?

38
Output
  • Exception
  • Done

39
Output
  • Exception
  • Done
  • why?

40
Graphics Supplement Exceptions in GUIs
  • An uncaught exception in a (non-GUI) application
    will end the program.
  • An uncaught exception in a GUI program (either a
    JFrame GUI or an applet) will not end the
    program.
  • However, unless the exception is caught, the GUI
    may not cope correctly with the exception or the
    user may receive insufficient instructions.

41
Programming Example A JFrame Using Exceptions
  • The example JFrame GUI allows the user to write
    the name of a color in a text field and to click
    the Show Color button.
  • If the GUI recognizes the color, the background
    color changes to the named color.
  • Otherwise, the text field displays Unknown
    Color and the background changes to gray.

42
Programming Example A JFrame Using Exceptions,
cont.
  • class ColorDemo

43
Programming Example A JFrame Using Exceptions,
cont.
  • class UnknownColorException

44
Programming Example A JFrame Using Exceptions,
cont.
  • class ShowColorDemo

45
Programming Example A JFrame Using Exceptions,
cont.
46
throws Clause Not Allowed in actionPerformed
  • A throws clause cannot be added to method
    actionPerformed in any action listener class.
  • Any exception thrown in method actionPerformed
    must be caught in method actionPerformed.
  • Similarly, if method windowClosing is redefined
    in a window listener class, you may not add a
    throws clause to method windowClosing.

47
Summary
  • You have become familiar with the notion of
    exception handling.
  • You have learned Java syntax for exception
    handling.
  • You have learned to use exception handling
    effectively in classes and programs.
Write a Comment
User Comments (0)
About PowerShow.com