Exception Handling PDF
Exception Handling PDF
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
1
JAVA Means DURGASOFT
Exception Handling
What is the difference between Error and Exception?
Error Exception
Definition of Exception:
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
2
JAVA Means DURGASOFT
1.Predefined Exceptions
2.UserDefined Exceptions
1.Predefined Exceptions:
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
3
JAVA Means DURGASOFT
1. Checked Exceptions
2. Unchecked Exceptions
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
4
JAVA Means DURGASOFT
2.Runtime Exceptions and its subclasses, error and its subclasses are treated
as Unchecked exceptions and the remaining exception classes are treated as
checked exception.
If any checked exception is having only checked exceptions are child classes
then that checked exceptions are called as "pure checked exceptions".
Ex:IOException
Ex:Exception,Throwable
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
5
JAVA Means DURGASOFT
1.Arithmetic Exception:
class Test{
int i=100;
int j=0;
float f=i/j;
System.out.println(f);
}}
If we execute the above code then JVM will provide the following Exception
message. Exception in thread "main" java.lang.ArithmeticException:/by zero
at Test.main(Test.java7)
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
6
JAVA Means DURGASOFT
The above exception message is divided into the following three parts:
2.NullPointerException:
import java.util.*;
class Test{
Date d=null;
System.out.println(d.toString());
}}
If we execute the above code then JVM will provide the following exception
details.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
7
JAVA Means DURGASOFT
Exception Location:Test.java:7
3.ArrayIndexOutofBoundsException:
Ex:
class Test{
int[] a={1,2,3,4};
System.out.println(a[4]);
}}
If we execute the above code then JVM will provide the following exception
message:
Exception Name:java.lang.ArrayIndexOutOfBoundsException
Exception Description:4
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
8
JAVA Means DURGASOFT
Exception Location:Test.java:10
4.FileNotFoundException:
Ex:
import java.io.*;
class Test{
}}
If we execute the above code then JVM will provide the following exception
message:
Exception Name:java.io.FileNotFoundException
Exception Location:Test.java:7
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
9
JAVA Means DURGASOFT
5.ClassNotFoundException:
class Test{
Class.forName("A");
}}
If we execute the above code JVM will provide the following exception
details:
Exception Name:java.lang.ClassNotFoundException
Exception Description:A
Exception Location:Test.java:5
6.InstantiationException:
class A{
static{
System.out.println(“Class Loading”);
A(int i){
System.out.println("Object Creating");
}}
class Test{
Class c=Class.forName("A");
Object obj=c.newInstance();
}}
If we execute the above code then JVM will provide the following
ExceptionDetails.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
11
JAVA Means DURGASOFT
Exception Description:A
Exception Location:Test.java:7
7.IllegealAccessException:
Ex:
class A{
private A(){
System.out.println("Object Creating");
}}
class Test{
Class c=Class.forName("A");
Object obj=c.newInstance();
}}
If we execute the above code then JVM will provide the following exception
details.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
12
JAVA Means DURGASOFT
Exception Name:java.lang.IllegalAccessException
Exception Location:Test.java:10
8.IllegalArgumentException:
class Test{
t.setPriority(15);
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
13
JAVA Means DURGASOFT
}}
If we execute the above code then JVM will provide the following exception
details.
Exception Name:java.lang.IllegalArgumentException
Exception Location:Test.java:10
9.IllegalThreadStateException:
If we access setDaemon(true) method after starting the thread then JVM will
rise an exceptionlike "IllegalThreadStateException".
while(true){
System.out.println("User Thread");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
14
JAVA Means DURGASOFT
}}}
class Test{
mt.setDaemon(true);
mt.start();
for(int i=0;i<10;i++){
System.out.println("Main Thread");
}}
If we run the above programme then JVM will provide the following
exception details.
Exception Name:java.lang.IllegalThreadStateException
Exception Location:Test.java:17
10.ClassCastException:
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
15
JAVA Means DURGASOFT
class A{
class B extends A{
class Test{
A a=new A();
B b=(B)a;
}}
If we run the above code then JVM will provide the following exceptional
details:
Exception Name:java.lang.ClassCastException
Exception Location:Test.java:10
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
16
JAVA Means DURGASOFT
“throw” keyword:
Syntax:
Ex:
import java.io*;
class Test{
String accNo=br.readLine();
String accName=br.readLine();
int p_num=Integer.parseInt(pin_number);
System.out.println("Account Details");
System.out.println("----------------");
else{
}}}
class Test{
System.out.println("Before Exception");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
18
JAVA Means DURGASOFT
System.out.println("After Exception");
}}
1.”throws” keyword:
“throws” keyword will allow more than one exception in method prototypes.
Status:Valid
Status:InValid
Ex:
Status:Valid
Ex:
Status:Valid
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
20
JAVA Means DURGASOFT
NOTE:In any Java method,if we call some other method which is bypassing
an exception by using “throws” keyword,then we must handle that exception
either by using “throws” keyword in the present method prototype or by
using “try-catch-finally” in the body of the present method.
Ex:
-----
------
Void m2(){
try{
m1();
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
21
JAVA Means DURGASOFT
catch(Exception e){
e.printStackTrace();
}}
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
22
JAVA Means DURGASOFT
----
m1();
Import java.io.*;
class A{
concat();
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
23
JAVA Means DURGASOFT
class Test{
A a=new A();
a.add();
}}
Internal Flow:
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
24
JAVA Means DURGASOFT
Ans:
try-catch-finally:
Syntax:
try{
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
25
JAVA Means DURGASOFT
catch(Exception_Name e){
finally{
where the purpose of try block is to include some java code where the
chances of getting exceptions.
If JVM identify any exception inside "try" block then JVM will bypass flow of
executionto "catch" block by skipping all the remaining instructions in try
block and by passingthe generated Exception object reference as parameter.
The main purpose of catch block is to catch the exception from try block and
to displayexception details on command prompt.
1.e.printStackTrace()
2.System.out.println(e):
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
26
JAVA Means DURGASOFT
3.System.out.println(e.getMessage());
1.e.printStackTrace():
2.System.out.println(e):
3.System.out.println(e.getMessage()):
class Test{
try{
catch(ArithmeticException e){
e.printStackTrace();
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
27
JAVA Means DURGASOFT
System.out.println();
System.out.println(e);
System.out.println();
System.out.println(e.getMessage());
finally{
}}
Output:
at Test.main(Test.java:7)
My Arithmetic Exception
The main purpose of finally block is to include some Java code inorder to
executeirrespective of getting exception in "try" block and irrespective of
executing "catch"block.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
28
JAVA Means DURGASOFT
class Test{
System.out.println("Before Try");
try{
System.out.println("Inside Try");
catch(Exception e){
System.out.println("Inside Catch");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
29
JAVA Means DURGASOFT
finally{
System.out.println("Inside Finally");
System.out.println("After Finally");
}}
Output:
Before try
Inside try
Inside finally
After finally
class Test{
System.out.println("Before Try");
try{
float f=100/0;
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
30
JAVA Means DURGASOFT
catch(Exception e){
System.out.println("Inside Catch");
finally{
System.out.println("Inside Finally");
System.out.println("After Finally");
}}
Output:
Before try
Inside catch
Inside finally
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
31
JAVA Means DURGASOFT
After finally
class A{
int m1(){
try{
return 10;
catch(Exception e){
return 20;
finally{
return 30;
}}}
class Test{
A a=new A();
int val=a.m1();
System.out.println(val);
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
32
JAVA Means DURGASOFT
}}
Output:
30
Ans:Yes,it is possible to provide try block with out catch block but by using
"finally"Block.
try{
finally{
class Test{
System.out.println("Before try");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
33
JAVA Means DURGASOFT
try{
int i=100;
int j-0;
float f=i/j;
finally{
System.out.println("Inside finally");
System.out.println("After Finally");
}}
Output:
Before try
Inside finally
at Test.main(Test.java:11)
Reason:When JVM encounter exception in try block,JVM will search for catch
block,if no catch block is identified,then JVM will terminate the program
abnormally after executing finally block.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
34
JAVA Means DURGASOFT
Ans:Yes,it is possible "try" block with out using "finally" block but by
providing "catch"block.
Ex:
try{
-------
--------
catch(Exception e){
-------------
-------------
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
35
JAVA Means DURGASOFT
Syntax-1:
try{
try{
catch(Exception e){
finally{
catch(Exception e){
finally{
Syntax-2:
try{
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
36
JAVA Means DURGASOFT
catch(Exception e){
try{
catch(Exception e)
finally{
finally{
Syntax-3:
try{
catch(Exception e){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
37
JAVA Means DURGASOFT
finally{
try{
catch(Exception e){
finally{
}}
Q)Is it possible to provide more than one catch block for a single try block?
Ans:Yes,it is possible to provide more than one catch block for a single try
block but withthe following conditions.
1.If no inheritance relation existed between exception class names which are
specified alongwith catch blocks then it is possible to provide all the catch
blocks in any order.Ifinheritance relation is existed between exception class
names then we have to arrange allthe catch blocks as per Exception classes
inheritance increasing order.
Ex1:
try{
catch(ArithmeticException e){
catch(ClassCastException e){
catch(NullPointerException e){
Status:Valid Combination
Ex2:
try{
catch(NullPointerException e){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
39
JAVA Means DURGASOFT
catch(ArithmeticException e){
catch(ClassCastException e){
status:Valid Combination
Ex3:
try{
catch(ArithmeticException e){
catch(RuntimeException e){
catch(Exception e){
Status:Valid
Reason:Inheritance Relationship
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
40
JAVA Means DURGASOFT
Ex4:
try{
catch(Exception e){
catch(RuntimeException e){
catch(ArithmeticException e){
status:Invalid
Ex5:
try{
catch(ArithmeticException e){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
41
JAVA Means DURGASOFT
catch(IOException e){
catch(NullPointerException e){
Status:Invalid
Ex6:
try{
catch(ArithmeticException e){
catch(IOException e){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
42
JAVA Means DURGASOFT
catch(NullPointerException e){
status:Valid
try{
catch(Exception e){
If we specify "Exception" class along with catch block then it able to catch
and handleall the exceptions which are either same as Exception or child
classes to Exception,this approach will not provide specific handling for the
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
43
JAVA Means DURGASOFT
specific exceptions,it willhandle all the exceptions in the common way like
Exception object.
try{
}catch(ArithmeticException e){
}catch(NullPointerException e){
}catch(ClassCastException e){
Syntax:
try{
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
44
JAVA Means DURGASOFT
class Test{
try{
/* int a=10;
int b=0;
float c=a/b;
*/
/*java.util.Date d=null;
System.out.println(d.toString());
*/
int[] a={1,2,3,4,5};
System.out.println(a[10]);
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
45
JAVA Means DURGASOFT
catch(ArithmeticException | NullPointerException |
ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}}
The main intention to declare the resources before "try" block is to make
availableresources variables to "catch" block and to "finally" block to use.
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
46
JAVA Means DURGASOFT
File f=null;
BufferedReader br=null;
Connection con=null;
try{
f=new File("abc.txt");
con=DriverManager.getConnection("jdbc:odbc:nag","system","durga");
-----
-----
catch(Exception e){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
47
JAVA Means DURGASOFT
finally{
try{
f.close();
br.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}}
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
48
JAVA Means DURGASOFT
Synatx:
try(Resource1;Resource2;........Resource-n){
-------
------
catch(Exception e){
-----
-----
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
49
JAVA Means DURGASOFT
Ex:
Connection
con=DriverManager.getConnection("jdbc:odbc:nag","system","durga");)
-------
-------
catch(Exception e){
e.printStackTrace();}
import java.io.*;
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
50
JAVA Means DURGASOFT
class Test{
int size=fis.available();
fis.read(b);
fos.write(b);
catch(Exception e){
e.printStackTarce();
}}}
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
51
JAVA Means DURGASOFT
MyException(String err_Msg){
super(err_Msg);
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
52
JAVA Means DURGASOFT
}}
try{
catch(MyException me){
me.printStackTrace();
InsufficientFundsException(String err_Msg){
super(err_Msg);
}}
class Transaction{
String accNo;
String accName;
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
53
JAVA Means DURGASOFT
String accType;
int initial_Amt=10000;
this.accNo=accNo;
this.accName=accName;
this.accType=accType;
try{
System.out.println("Transaction Details");
System.out.println("-------------------");
System.out.println("Transaction Id :T123");
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
54
JAVA Means DURGASOFT
int total_Amt=0;
if(wd_Amt<initial_Amt)
total_Amt=initial_Amt-wd_Amt;
initial_Amt=total_Amt;
else{
total_Amt=initial_Amt;
System.out.println("Transaction Status:FAILURE");
catch(InsufficientFundsException e){
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
55
JAVA Means DURGASOFT
System.out.println(e.getMessage());
System.out.println("********ThankQ,Visit Again***********");
class Test{
tx1.withdraw(5000);
System.out.println();
tx2.withdraw(15000);
}}
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
56
JAVA Means DURGASOFT
DURGA SOFTWARE SOLUTIONS ,202 HUDA Maitrivanam, Ameerpet , Hyd. Ph: 040-64512786 Page
57