Adv Java
Programming


Exception Handling tutorials
-
An exception is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions.
-
The process of responding to the occurrence, during computation, of exceptions anomalous or exceptional events requiring special processing often changing the normal flow of program execution.
-
When an error occurs within a method, the method creates an object and hands it off to the runtime system. The object, called an exception object, contains information about the error, including its type and the state of the program when the error occurred.
-
Creating an exception object and handing it to the runtime system is called throwing an exception.
-
Conditions that can readily occur in a correct program are checked exceptions. These are represented by the Exception class.
-
Severe problems that normally are treated as fatal or situations that probably reflect program bugs are unchecked exceptions.
Different between Error and Exception
Error |
Exception |
An error is an irrecoverable condition occurring at runtime. |
Exceptions are conditions that occur because of bad input. |
Such as Out Of Memory error. These JVM errors and you can not repair them at runtime. |
FileNotFoundException will be thrown if the specified file does not exist. Or a NullPointerException will take place if you try using a null reference. |
Though error can be caught in catch block but the execution of application will come to a halt and is not recoverable. |
In most of the cases it is possible to recover from an exception probably by giving user a feedback for entering proper values etc. |
Error in Java are unchecked |
Exception in Java are checked and unchecked. |
|
Example: Java program to demonstrating an Exception in adding two numbers |
|
//Program name ExceptionDemo.java//Java program to demonstrating an Exception in adding two numberspublic class ExceptionDemo{public static void main(String[] args){int num1,num2,sum;System.out.print("Enter Num1 : ");Scanner scan =new Scanner(System.in);num1=scan.nextInt();System.out.print("Enter Num2 : ");num2=scan.nextInt();sum=num1+num2;System.out.print("Sum of Num1 and Num2 : "+sum);}} |
Output |
Enter Num1 : 10Enter Num2 : 15Sum of Num1 and Num2 : 25Enter Num1 : 10Enter Num2 : fException in thread "main" java.util.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:840)at java.util.Scanner.next(Scanner.java:1461)at java.util.Scanner.nextInt(Scanner.java:2091)at java.util.Scanner.nextInt(Scanner.java:2050)at ExceptionDemo.main(ExceptionDemo.java:11)Enter Num1 : 10Enter Num2 : 10.5Exception in thread "main" java.util.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:840)at java.util.Scanner.next(Scanner.java:1461)at java.util.Scanner.nextInt(Scanner.java:2091)at java.util.Scanner.nextInt(Scanner.java:2050)at ExceptionDemo.main(ExceptionDemo.java:11) |
-
Note: In above program if you enter proper integer number then program would sum up properly but if you try to enter any character or floating number then it will throw an exception as “Exception in thread "main" java.util.InputMismatchException” and program will terminate.
-
To avoid this abnormal termination you can use try…catch.. finally block for handling exceptions.
Exception Handling using try.. catch and finally block
-
try
-
The first step in constructing an exception handler is to enclose the code that might throw an exception within a try block.
-
In general, a try block looks like the following:
-
try
{
// code
}
-
If an exception occurs within the try block, that exception is handled by an exception handler associated with it.
-
To associate an exception handler with a try block, you must put a catch block after it.
-
Catch
-
At least one catch is required for the try-catch. finally is not required but that has it own uses.
-
When an exception is throw and a try-catch is found, Java will look through all the catch statments to see what they actually will catch. This goes in the order that they are written.
-
In general, a try..catch block looks like the following:
-
try
{
// Code
}
catch(Exceptiontype name)
{
}
catch(Exceptiontype name)
{
}
-
Each catch block is an exception handler and handles the type of exception indicated by its argument.
-
The argument type, ExceptionType, declares the type of exception that the handler can handle and must be the name of a class that inherits from the Throwable class. The handler can refer to the exception with name.
-
The catch block contains code that is executed if and when the exception handler is invoked. The runtime system invokes the exception handler when the handler is the first one in the call stack whose ExceptionType matches the type of the exception thrown.
-
The system considers it a match if the thrown object can legally be assigned to the exception handler's argument.
-
finally
-
The finally block always executes when the try block exits. This ensures that the finally block is executed even if an unexpected exception occurs.
-
But finally is useful for more than just exception handlingit allows the programmer to avoid having cleanup code accidentally bypassed by a return, continue, or break.
-
Putting cleanup code in a finally block is always a good practice, even when no exceptions are anticipated.
-
In general, a try..catch..finally block looks like the following:
-
try
{
// Code
}
catch(Exceptiontype name)
{
}
catch(Exceptiontype name)
}
}
..
..
finally
{
//finally code.
}
|
Example: Java program to demonstrating an Exception Handling in adding two numbers |
|
//Program name ExceptionDemo.java//Java program to demonstrating an Exception Handling in adding two numbersimport java.util.Scanner;public class ExceptionDemo{public static void main(String[] args){int num1,num2,sum;try{System.out.print("Enter Num1 : ");Scanner scan =new Scanner(System.in);num1=scan.nextInt();System.out.print("Enter Num2 : ");num2=scan.nextInt();sum=num1+num2;System.out.println("Sum of Num1 and Num2 : "+sum);}catch(Exception ex){System.out.println("Exception Occur: "+ex);}finally{System.out.println("Finally program ends..");}}} |
Output |
Enter Num1 : 10Enter Num2 : 15Sum of Num1 and Num2 : 25Finally program ends..Enter Num1 : 10Enter Num2 : 10.5Exception Occur: java.util.InputMismatchExceptionFinally program ends.. |