IntroductionUsers may use our programs in an unexpected
ways.Due to design errors or coding errors, our
programs may fail in unexpected ways during execution, or may result in an abnormal program termination
It is our responsibility to produce robust code that does not fail unexpectedly.
Consequently, we must design error handling into our programs.
2
Errors and Error HandlingSome typical causes of errors:
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)
More typical causes of errors:Array errors (i.e. accessing element –1)Conversion errors (i.e. convert ‘q’ to a
number)
3
ExceptionsWhat 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.
4
Checked ExceptionsHow are they used?
Exceptions fall into two categories:Checked ExceptionsUnchecked Exceptions
Checked exceptions are inherited from the core Java class Exception. They represent compile time exceptions that are your responsibility to check.
Checked exceptions must be handled in your code. Otherwise, the compiler will issue an error message.
5
Unchecked ExceptionsUnchecked exceptions are runtime
exceptions that result at runtime from conditions that you should not have allowed in the first place (inherited from RuntimeException).
You do not have to do anything with an unchecked exception.
But, if not handled, your program will terminate with an appropriate error message.
6
Checked Exceptions
7
Exception Description
ClassNotFoundException Class not found.
CloneNotSupportedException Attempt to clone an object that does not implement the Cloneable interface.
IllegalAccessException Access to a class is denied.
InstantiationException Attempt to create an object of an abstract class or interface.
InterruptedException One thread has been interrupted by another thread.
NoSuchFieldException A requested field does not exist.
NoSuchMethodException A requested method does not exist.
Exception DescriptionArithmeticException Arithmetic error, such as divide-by-zero.ArrayIndexOutOfBoundsException
Array index is out-of-bounds.
ArrayStoreException Assignment to an array element of an incompatible type.
ClassCastException Invalid cast.IllegalArgumentException Illegal argument used to invoke a method.IllegalMonitorStateException
Illegal monitor operation, such as waiting on an unlocked thread.
IllegalStateException Environment or application is in incorrect state.
IllegalThreadStateException
Requested operation not compatible with current thread state.
IndexOutOfBoundsException
Some type of index is out-of-bounds.
NegativeArraySizeException
Array created with a negative size.
NullPointerException Invalid use of a null reference.NumberFormatException Invalid conversion of a string to a numeric
format.SecurityException Attempt to violate security.StringIndexOutOfBounds Attempt to index outside the bounds of a
string.UnsupportedOperationException
An unsupported operation was encountered.
8
Unchecked Exceptions
Definitions• Stack trace• Name of the exception in a descriptive
message that indicates the problem• Complete method-call stack• exceptionObject.printStackTrace();
• Exception message: returns a detailed message which describes the exception. • exceptionObject.getMessage();
9
Exception HandlingException handling is accomplished through 1. the “try – catch” mechanism: handle
the exception by yourself, 2. or by a “throws” clause in the method
declaration: pass exception handling “up the chain”.
If the method contains code that may cause a checked exception, you MUST handle the exception OR pass the exception up the chain.
10
Coding ExceptionsTry-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.
If none of the code inside the try block throws an exception, then the program skips the catch clause.
11
Coding ExceptionsExample
try {… normal program code}
catch(ArithmeticException AEx){ … }catch(Exception e) {… exception handling code}
finally{ … code to close some files or release
resources }
12
finally BlockConsists of finally keyword followed by a
block of code enclosed in curly bracesOptional in a try statementThis block contains code that is ALWAYS
executed whether or not an exception is thrown in the corresponding try block or any of its corresponding catch blocks.
If present, is placed after the last catch blockFinally blocks can be used for operations that
must happen no matter what (i.e. cleanup operations such as closing a file)
13
Using the throws ClauseExceptions can be thrown by statements in
method’s body or by methods called in method’s body
Exceptions can be of types listed in throws clause or subclasses
14
Coding ExceptionsPassing 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.
You are not allowed to add more throws specifiers to a subclass method than are present in the superclass method.Example
public void myMethod throws IOException {… normal code with some I/O
… throw new IOException();}
15
Top Related