Exception Handling in Java
Richard S. Huntrods
June 14, 2001
University of Calgary
June 14, 2001 Exception Handling in Java 1
Exception Handling in Java
Topics:
Introduction
Errors and Error handling
Exceptions
Types of Exceptions
Coding Exceptions
Summary
June 14, 2001 Exception Handling in Java 2
Introduction
Users have high expectations for
the code we produce.
Users will use our programs in
unexpected ways.
Due to design errors or coding
errors, our programs may fail in
unexpected ways during execution
June 14, 2001 Exception Handling in Java 3
Introduction
It is our responsibility to produce
quality code that does not fail
unexpectedly.
Consequently, we must design
error handling into our programs.
June 14, 2001 Exception Handling in Java 4
Errors and Error Handling
An Error is any unexpected result obtained
from a program during execution.
Unhandled errors may manifest themselves
as incorrect results or behavior, or as
abnormal program termination.
Errors should be handled by the
programmer, to prevent them from reaching
the user.
June 14, 2001 Exception Handling in Java 5
Errors and Error Handling
Some typical causes of errors:
Memory errors (i.e. memory incorrectly
allocated, memory leaks, “null pointer”)
File system errors (i.e. disk is full, disk
has been removed)
Network errors (i.e. network is down,
URL does not exist)
Calculation errors (i.e. divide by 0)
June 14, 2001 Exception Handling in Java 6
Errors and Error Handling
More typical causes of errors:
Array errors (i.e. accessing element –
1)
Conversion errors (i.e. convert ‘q’ to a
number)
Can you think of some others?
June 14, 2001 Exception Handling in Java 7
Errors and Error Handling
Traditional Error Handling
1. Every method returns a value (flag)
indicating either success, failure, or some
error condition. The calling method checks
the return flag and takes appropriate action.
Downside: programmer must remember to
always check the return value and take
appropriate action. This requires much
code (methods are harder to read) and
something may get overlooked.
June 14, 2001 Exception Handling in Java 8
Errors and Error Handling
Traditional Error Handling
Where used: traditional programming
languages (i.e. C) use this method for
almost all library functions (i.e.
fopen() returns a valid file or else null)
June 14, 2001 Exception Handling in Java 9
Errors and Error Handling
Traditional Error Handling
2. Create a global error handling routine,
and use some form of “jump” instruction to
call this routine when an error occurs.
Downside: “jump” instruction (GoTo) are
considered “bad programming practice” and
are discouraged. Once you jump to the error
routine, you cannot return to the point of
origin and so must (probably) exit the
program.
June 14, 2001 Exception Handling in Java 10
Errors and Error Handling
Traditional Error Handling
Where used: many older
programming texts (C, FORTRAN)
recommended this method to
programmers. Those who use this
method will frequently adapt it to new
languages (C++, Java).
June 14, 2001 Exception Handling in Java 11
Errors and Error Handling
Exceptions – a better error handling
Exceptions are a mechanism that provides
the best of both worlds.
Exceptions act similar to method return
flags in that any method may raise and
exception should it encounter an error.
Exceptions act like global error methods in
that the exception mechanism is built into
Java; exceptions are handled at many levels
in a program, locally and/or globally.
June 14, 2001 Exception Handling in Java 12
Exceptions
What are they?
An exception is a representation of an
error condition or a situation that is not
the expected result of a method.
Exceptions are built into the Java
language and are available to all
program code.
Exceptions isolate the code that deals
with the error condition from regular
program logic.
June 14, 2001 Exception Handling in Java 13
Exceptions
How are they used?
Exceptions fall into two categories:
Checked Exceptions
Unchecked Exceptions
Checked exceptions are inherited from the core
Java class Exception. They represent exceptions
that are frequently considered “non fatal” to
program execution
Checked exceptions must be handled in your
code, or passed to parent classes for handling.
June 14, 2001 Exception Handling in Java 14
Exceptions
How are they used?
Unchecked exceptions represent error
conditions that are considered “fatal”
to program execution.
You do not have to do anything with
an unchecked exception. Your
program will terminate with an
appropriate error message.
June 14, 2001 Exception Handling in Java 15
Exceptions
Examples:
Checked exceptions include errors
such as “array index out of bounds”,
“file not found” and “number format
conversion”.
Unchecked exceptions include errors
such as “null pointer”.
June 14, 2001 Exception Handling in Java 16
Exceptions
How do you handle exceptions?
Exception handling is accomplished
through the “try – catch” mechanism,
or by a “throws” clause in the method
declaration.
For any code that throws a checked
exception, you can decide to handle
the exception yourself, or pass the
exception “up the chain” (to a parent
class).
June 14, 2001 Exception Handling in Java 17
Exceptions
How do you handle exceptions?
To handle the exception, you write a “try-
catch” block. To pass the exception “up the
chain”, you declare a throws clause in your
method or class declaration.
If the method contains code that may cause
a checked exception, you MUST handle the
exception OR pass the exception to the
parent class (remember, every class has
Object as the ultimate parent)
June 14, 2001 Exception Handling in Java 18
Coding Exceptions
Try-Catch Mechanism
Wherever your code may trigger an
exception, the normal code logic is
placed inside a block of code starting
with the “try” keyword:
After the try block, the code to handle
the exception should it arise is placed
in a block of code starting with the
“catch” keyword.
June 14, 2001 Exception Handling in Java 19
Coding Exceptions
Try-Catch Mechanism
You may also write an optional “finally”
block. This block contains code that is
ALWAYS executed, either after the “try”
block code, or after the “catch” block code.
Finally blocks can be used for operations
that must happen no matter what (i.e.
cleanup operations such as closing a file)
June 14, 2001 Exception Handling in Java 20
Coding Exceptions
Example
try {
… normal program code
}
catch(Exception e) {
… exception handling code
}
June 14, 2001 Exception Handling in Java 21
Coding Exceptions
Passing the exception
In any method that might throw an exception,
you may declare the method as “throws” that
exception, and thus avoid handling the
exception yourself
Example
public void myMethod throws IOException {
… normal code with some I/O
}
June 14, 2001 Exception Handling in Java 22
Coding Exceptions
Types of Exceptions
All checked exceptions have class
“Exception” as the parent class.
You can use the actual exception class or
the parent class when referring to an
exception
Where do you find the exception classes?
Reference books such as “Java in a Nutshell”
(O’Reilly, 2001), or the Java Documentation.
June 14, 2001 Exception Handling in Java 23
Coding Exceptions
Types of Exceptions
Examples:
public void myMethod throws Exception {
public void myMethod throws IOException
{
try { … }
catch (Exception e) { … }
try { … }
catch (IOException ioe) { … }
June 14, 2001 Exception Handling in Java 24
Code Examples
1. Demonstration of an unchecked
exception (NullPointerException)
2. Demonstration of checked
exceptions:
Passing a DivideByZeroException
Handling a DivideByZeroException
June 14, 2001 Exception Handling in Java 25
Summary
Exceptions are a powerful error
handling mechanism.
Exceptions in Java are built into the
language.
Exceptions can be handled by the
programmer (try-catch), or handled
by the Java environment (throws).
June 14, 2001 Exception Handling in Java 26