0% found this document useful (0 votes)
3 views

Lecture-7-Exceptions

concepts2
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Lecture-7-Exceptions

concepts2
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 40

Concepts of Programming Languages

Eleventh Edition

Chapter 14
Exception Handling and
Event Handling

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Student's Grade Percent
)‫ (اسم المادة‬- )‫ (اسم الدكتور‬.‫د‬
‫) امتحان الفصل الدراسي (س) لعام‬2-1(

70 %

60 %

50 %

40 %

30 %
65.32 %

20 %

10 %
15.03 %
0%
8.38 %
Excellent 8.09 %
Very Good
Good 2.60 %
Pass 0.58 %
Weak
Very Weak
Objectives

14.1 Introduction to Exception Handling


14.2 Exception Handling in C++
14.3 Exception Handling in Java
14.4 Exception Handling in Python and Ruby
14.5 Introduction to Event Handling
14.6 Event Handling with Java
14.7 Event Handling in C#

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Exception Handling Alternatives
• An exception is raised when its associated event occurs
• A language that does not have exception handling
capabilities can still define, detect, raise, and handle
exceptions (user defined, software detected)
• Alternatives:
– Send an auxiliary parameter or use the return value to
indicate the return status of a subprogram
– Pass a label parameter to all subprograms (error
return is to the passed label)
– Pass an exception handling subprogram to all
subprograms
Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Exception Handling Control Flow

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Exception Handling in C++

• Added to C++ in 1990


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

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
C++ Exception Handlers

• Exception Handlers Form:

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Throwing Exceptions

• Exceptions are all raised explicitly by the statement:

• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Unhandled Exceptions (1 of 2)

• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Unhandled Exceptions (2 of 2)
• 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 exception
(the throw clause)

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Evaluation (1 of 2)

• There are no predefined exceptions


• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Classes of Exceptions (1 of 2)

• 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

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Classes of Exceptions (2 of 2)
▪ Has two predefined subclasses, IOException
and RuntimeException (e.g.,
ArrayIndexOutOfBoundsException and
NullPointerException

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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:

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Binding Exceptions to Handlers (1 of 3)
• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Binding Exceptions to Handlers (2 of 3)
• 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

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Binding Exceptions to Handlers (3 of 3)

• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
The finally Clause

• Can appear at the end of a try construct


• Form:

• Purpose: To specify code that is to be executed,


regardless of what happens in the try construct

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
The finally Clause: Example

• A try construct with a finally clause can be used outside


exception handling

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Assertions (1 of 2)

• 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

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Assertions (2 of 2)

• Two forms
– assert condition;
– assert condition: expression;

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Evaluation (2 of 2)

• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Exception Handling in Python (1 of 4)

• Exceptions are objects; the base class is


BaseException
• All predefined and user-defined exceptions are derived
from Exception
• Predefined subclasses of Exception are
ArithmeticError (subclasses are OverflowError,
ZeroDivisionError, and FloatingPointError)
and LookupError (subclasses are IndexError and
KeyError)

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Exception Handling in Python (2 of 4)

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Exception Handling in Python (3 of 4)

• Handlers handle the named exception plus all subclasses


of that exception, so if the named exception is
Exception, it handlers all predefined and user-defined
exceptions
• Unhandled exceptions are propagated to the nearest
enclosing try block; if no handler is found, the default
handler is called
• Raise IndexError creates an instance
• The raised exception object can be gotten:
except Exception as ex_obj:

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Exception Handling in Python (4 of 4)
• The assert statement tests its Boolean expression (first
parameter) and sends its second parameter to the
constructor for the exception object to be raised
assert test, data

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
The Java Event Model (1 of 2)
• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
The Java Event Model (2 of 2)
• 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 © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Summary (1 of 2)
• 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

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Summary (2 of 2)

• 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

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved
Copyright

Copyright © 2016, 2013, 2010 Pearson Education, Inc. All Rights Reserved

You might also like