Lec 16
Lec 16
Exceptions
An exception is a condition that is caused by run-time error in
the program
When the java interpreter encounters an error such as…
Dividing an integer by zero
It creates an exception object and throws (i.e., informs us that
an error has occurred)
2
Exception Handling
• If the exception object is not caught and handled properly
• The interpreter will display an error message and will terminate
the program
class excphand
{
public static void main(String args[ ] )
{
int a =10;
int b =5;
int c =5;
int x = a/(b-c);
System.out.println("x = " + x);
int y = a/(b-c);
System.out.println ("y = " + y);
}
} 3
Exception Handling
• If we want the program to continue with the execution of the
running code
• We should try to catch the exception object thrown by the error condition and
then display an appropriate message for taking corrective actions
• This task is known as
5
Exception Handling Mechanism
try Block Exception objet
cause an exception creator
Throws
exception
object
8
Exception Handling
• try
• Marks the start of a block associated with a set of exception handlers
• Catch
• Receive the error information
• throw
• Inform that an error has occurred
• throws
• Any exception that is thrown out of a method must be specified as
such by a throws clause
• finally
• Always
9
Outlines of Presentation
• Overview of Exception Handling
• The Basic Model
• Hierarchy of Event Classes
• Throw Clauses
• Throws Statement
10
Outlines of Presentation
• Overview of Exception Handling
• The Basic Model
• Hierarchy of Event Classes
• Throw Clauses
• Throws Statement
• Try Catch Block
11
Outlines of Presentation
• Overview of Exception Handling
• The Basic Model
• Hierarchy of Event Classes
• Throw Clauses
• Throws Statement
• Try Catch Block
12
Hierarchy of Exception Classes
• All error and exception classes are descendents or
subclass of the Throwable class
• A programmer can define an exception by extending the
Exception class or one of its descendants
• Example: java.lang.Exception class
13
Hierarchy of Exception Classes
14
Throwing Exceptions(throw)
• So far, we were only catching the exceptions thrown by
the Java system
• In fact, a user program may throw an exception explicitly:
throw ThrowableInstance;
• ThrowableInstance must be an object of type Throwable
or its subclass
• Exceptions are thrown using the throw statement
15
Throwing Exceptions(throw)
• Two ways to obtain a Throwableinstance
• Creating one with the new operatore
throw new NullPointerException("demo");
• Using a parameter of the catch clause
try { … } catch(Throwable e) { … e …}
16
throws Declaration
• If a method is capable of causing an exception that it does
not handle, it must specify this behavior by the throws
clause in its declaration:
type name(parameter-list) throws exception-list
{
…
}
17
Example: throws 1
• The throwOne method throws an exception that it
does not catch, nor declares it within the throws
clause
class ThrowsDemo {
static void throwOne() {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
throwOne();
}
}
•
18
Example: throws 2
• Corrected program: throwOne lists exception, main catches it
class ThrowsDemo {
static void throwOne() throws IllegalAccessException {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
try {
throwOne();
}
catch (IllegalAccessException e) {
System.out.println("Caught " + e);
}
}
19
Finally clause
• It is used to handle premature execution of a method (i.e. a
method open a file upon entry and closes it upon exit)
• finally creates a block of code that will be executed after
try/catch block has completed
• finally clause will execute whether or not an exception is
thrown
• The try/catch statement requires at least one catch or
finally clause, although both are optional
try { … }
catch(Exception1 ex1) { … } …
finally { … }
20
Example
class demoproc { //In procC, the try statement executes normally
//procA prematurely breaks out of the try by throwing //without error, however the finally clause is still
//an exception, the finally clause is executed on the //executed
//way out static void procC() {
static void procA() { try {
try { System.out.println("inside procC");
System.out.println("inside procA"); } finally {
throw new RuntimeException("demo"); System.out.println("procC's finally");
} finally { }
System.out.println("procA's finally"); }
}}
//Demonstration of the three methods
//procB’s try statement is exited via a return public static void main(String args[]) {
//statement, the finally clause is executed before try {
//procB returns procA();
static void procB() { } catch (Exception e) {
try { System.out.println("Exception caught");
System.out.println("inside procB"); }
return; procB();
} finally { procC();
System.out.println("procB's finally"); }
}} }
21