Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
8 views31 pages

Ch14-Short CSE425 BASIC

CSE 425 STUDY MATERIAL

Uploaded by

saber.hossain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views31 pages

Ch14-Short CSE425 BASIC

CSE 425 STUDY MATERIAL

Uploaded by

saber.hossain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 31

Chapter 14

Exception Handling
and Event
Handling
Chapter 14 Topics

• Introduction to Exception Handling


• Exception Handling in Ada
• Exception Handling in C++
• Exception Handling in Java
• Introduction to Event Handling
• Event Handling with Java
• Event Handling in C#

Copyright © 2012 Addison-Wesley. All rights reserved. 1-2


Introduction to Exception Handling

• In a language without exception handling


– When an exception occurs, control goes to the
operating system, where a message is
displayed and the program is terminated
• In a language with exception handling
– Programs are allowed to trap some
exceptions, thereby providing the possibility of
fixing the problem and continuing

Copyright © 2012 Addison-Wesley. All rights reserved. 1-3


Basic Concepts

• Many languages allow programs to trap


input/output errors (including EOF)
• An exception is any unusual event, either
erroneous or not, detectable by either hardware
or software, that may require special processing
• The special processing that may be required
after detection of an exception is called
exception handling
• The exception handling code unit is called an
exception handler

Copyright © 2012 Addison-Wesley. All rights reserved. 1-4


Advantages of Built-in Exception
Handling

• Error detection code is tedious to write


and it clutters the program
• Exception handling encourages
programmers to consider many different
possible errors
• Exception propagation allows a high level
of reuse of exception handling code

Copyright © 2012 Addison-Wesley. All rights reserved. 1-5


Design Issues

• How and where are exception handlers


specified and what is their scope?
• How is an exception occurrence bound to
an exception handler?
• Can information about the exception be
passed to the handler?
• Where does execution continue, if at all,
after an exception handler completes its
execution? (continuation vs. resumption)
• Is some form of finalization provided?

Copyright © 2012 Addison-Wesley. All rights reserved. 1-6


Design Issues (continued)

• How are user-defined exceptions specified?


• Should there be default exception handlers
for programs that do not provide their own?
• Can predefined exceptions be explicitly
raised?
• Are hardware-detectable errors treated as
exceptions that can be handled?
• Are there any predefined exceptions?
• How can exceptions be disabled, if at all?

Copyright © 2012 Addison-Wesley. All rights reserved. 1-7


Exception Handling Control Flow

Copyright © 2012 Addison-Wesley. All rights reserved. 1-8


Exception Handling in C++

• Added to C++ in 1990


• Design is based on that of CLU, Ada, and
ML

Copyright © 2012 Addison-Wesley. All rights reserved. 1-9


C++ Exception Handlers

• Exception Handlers Form:


try {
-- code that is expected to raise an exception
}
catch (formal parameter) {
-- handler code
}
...
catch (formal parameter) {
-- handler code
}

Copyright © 2012 Addison-Wesley. All rights reserved. 1-10


The catch Function

• catch is the name of all handlers--it is an


overloaded name, so the formal parameter
of each must be unique
• The formal parameter need not have a
variable
– It can be simply a type name to distinguish the
handler it is in from others
• The formal parameter can be used to
transfer information to the handler
• The formal parameter can be an ellipsis, in
which case it handles all exceptions not yet
handled
Copyright © 2012 Addison-Wesley. All rights reserved. 1-11
Throwing Exceptions

• Exceptions are all raised explicitly by the


statement:
throw [expression];
• The brackets are metasymbols
• A throw without an operand can only
appear in a handler; when it appears, it
simply re-raises the exception, which is
then handled elsewhere
• The type of the expression disambiguates
the intended handler
Copyright © 2012 Addison-Wesley. All rights reserved. 1-12
Unhandled Exceptions

• An unhandled exception is propagated to


the caller of the function in which it is
raised
• This propagation continues to the main
function
• If no handler is found, the default handler
is called

Copyright © 2012 Addison-Wesley. All rights reserved. 1-13


Continuation
• After a handler completes its execution,
control flows to the first statement after
the last handler in the sequence of
handlers of which it is an element
• Other design choices
– All exceptions are user-defined
– Exceptions are neither specified nor declared
– The default handler, unexpected, simply
terminates the program; unexpected can be
redefined by the user
– Functions can list the exceptions they may
raise
– Without a specification, a function can raise
any
Copyright © 2012 exception
Addison-Wesley. (the throw clause)
All rights reserved. 1-14
Evaluation

• It is odd that exceptions are not named


and that hardware- and system software-
detectable exceptions cannot be handled
• Binding exceptions to handlers through
the type of the parameter certainly does
not promote readability

Copyright © 2012 Addison-Wesley. All rights reserved. 1-15


Exception Handling in Java

• Based on that of C++, but more in line


with OOP philosophy
• All exceptions are objects of classes that
are descendants of the Throwable class

Copyright © 2012 Addison-Wesley. All rights reserved. 1-16


Classes of Exceptions

• The Java library includes two subclasses of


Throwable :
– Error
• Thrown by the Java interpreter for events such as heap
overflow
• Never handled by user programs
– Exception
• User-defined exceptions are usually subclasses of this
• Has two predefined subclasses, IOException and
RuntimeException (e.g.,
ArrayIndexOutOfBoundsException and
NullPointerException

Copyright © 2012 Addison-Wesley. All rights reserved. 1-17


Java Exception Handlers
• Like those of C++, except every catch
requires a named parameter and all
parameters must be descendants of
Throwable
• Syntax of try clause is exactly that of C+
+
• Exceptions are thrown with throw, as in
C++, but often the throw includes the new
operator to create the object, as in: throw
new MyException();

Copyright © 2012 Addison-Wesley. All rights reserved. 1-18


Binding Exceptions to Handlers

• Binding an exception to a handler is


simpler in Java than it is in C++
– An exception is bound to the first handler with
a parameter is the same class as the thrown
object or an ancestor of it
• An exception can be handled and
rethrown by including a throw in the
handler (a handler could also throw a
different exception)

Copyright © 2012 Addison-Wesley. All rights reserved. 1-19


Continuation
• If no handler is found in the try construct, the
search is continued in the nearest enclosing try
construct, etc.
• If no handler is found in the method, the
exception is propagated to the method’s caller
• If no handler is found (all the way to main), the
program is terminated
• To insure that all exceptions are caught, a
handler can be included in any try construct that
catches all exceptions
– Simply use an Exception class parameter
– Of course, it must be the last in the try construct

Copyright © 2012 Addison-Wesley. All rights reserved. 1-20


Checked and Unchecked
Exceptions
• The Java throws clause is quite different
from the throw clause of C++
• Exceptions of class Error and
RunTimeException and all of their
descendants are called unchecked
exceptions; all other exceptions are called
checked exceptions
• Checked exceptions that may be thrown
by a method must be either:
– Listed in the throws clause, or
– Handled in the method

Copyright © 2012 Addison-Wesley. All rights reserved. 1-21


Other Design Choices

• A method cannot declare more exceptions in its


throws clause than the method it overrides
• A method that calls a method that lists a
particular checked exception in its throws clause
has three alternatives for dealing with that
exception:
– Catch and handle the exception
– Catch the exception and throw an exception that is
listed in its own throws clause
– Declare it in its throws clause and do not handle it

Copyright © 2012 Addison-Wesley. All rights reserved. 1-22


The finally Clause

• Can appear at the end of a try construct


• Form:
finally {
...
}
• Purpose: To specify code that is to be
executed, regardless of what happens in
the try construct

Copyright © 2012 Addison-Wesley. All rights reserved. 1-23


Example

• A try construct with a finally clause can be used


outside exception handling

try {
for (index = 0; index < 100; index++) {

if (…) {
return;
} //** end of if
} //** end of try clause
finally {

} //** end of try construct

Copyright © 2012 Addison-Wesley. All rights reserved. 1-24


Assertions
• Statements in the program declaring a boolean
expression regarding the current state of the
computation
• When evaluated to true nothing happens
• When evaluated to false an AssertionError
exception is thrown
• Can be disabled during runtime without program
modification or recompilation
• Two forms
– assert condition;
– assert condition: expression;

Copyright © 2012 Addison-Wesley. All rights reserved. 1-25


Evaluation

• The types of exceptions makes more


sense than in the case of C++
• The throws clause is better than that of
C++ (The throw clause in C++ says little
to the programmer)
• The finally clause is often useful
• The Java interpreter throws a variety of
exceptions that can be handled by user
programs

Copyright © 2012 Addison-Wesley. All rights reserved. 1-26


Introduction to Event Handling

• An event is a notification that something


specific has occurred, such as a mouse
click on a graphical button
• The event handler is a segment of code
that is executed in response to an event

Copyright © 2012 Addison-Wesley. All rights reserved. 1-27


Java Swing GUI Components

• Text box is an object of class JTextField


• Radio button is an object of class JRadioButton
• Applet’s display is a frame, a multilayered
structure
• Content pane is one layer, where applets put
output
• GUI components can be placed in a frame
• Layout manager objects are used to control the
placement of components

Copyright © 2012 Addison-Wesley. All rights reserved. 1-28


The Java Event Model
• User interactions with GUI components
create events that can be caught by event
handlers, called event listeners
• An event generator tells a listener of an
event by sending a message
• An interface is used to make event-
handling methods conform to a standard
protocol
• A class that implements a listener must
implement an interface for the listener

Copyright © 2012 Addison-Wesley. All rights reserved. 1-29


The Java Event Model (continued)

• One class of events is ItemEvent, which is


associated with the event of clicking a
checkbox, a radio button, or a list item
• The ItemListener interface prescribes a
method, itemStateChanged, which is a
handler for ItemEvent events
• The listener is created with
addItemListener

Copyright © 2012 Addison-Wesley. All rights reserved. 1-30


Summary
• Ada provides extensive exception-handling facilities with a
comprehensive set of built-in exceptions.
• C++ includes no predefined exceptions
• Exceptions are bound to handlers by connecting the type of
expression in the throw statement to that of the formal
parameter of the catch function
• Java exceptions are similar to C++ exceptions except that a
Java exception must be a descendant of the Throwable class.
Additionally Java includes a finally clause
• An event is a notification that something has occurred that
requires handling by an event handler
• Java event handling is defined on the Swing components
• C# event handling is the .NET model, which is similar to the
Java model

Copyright © 2012 Addison-Wesley. All rights reserved. 1-31

You might also like