Exceptions in Java
What is an
Exception?
An exception is an unwanted
or unexpected event, which occurs during the execution of a program i.e at run
time, that disrupts the normal flow of the program’s instructions.
Error
vs Exception
Error: An
Error indicates serious problem that a reasonable application should not try to
catch.
Exception: Exception indicates conditions that a reasonable
application might try to catch.
Exception: Exception indicates conditions that a reasonable application might try to catch.
Exception Hierarchy
All exception and errors types are sub
classes of class Throwable,
which is base class of hierarchy.One branch is headed by Exception. This class is used for exceptional
conditions that user programs should catch. NullPointerException is an example
of such an exception.Another branch,Error are
used by the Java run-time system(JVM) to indicate errors having to do with
the run-time environment itself(JRE). StackOverflowError is an example of such
an error.
java exception handling
How JVM handle
an Exception?
Default Exception Handling :
Whenever inside a method, if an exception has
occurred, the method creates an Object known as Exception Object and hands it
off to the run-time system(JVM). The exception object contains name and
description of the exception, and current state of the program where exception
has occurred. Creating the Exception Object and handling it to the run-time
system is called throwing an Exception.There might be the list of the methods
that had been called to get to the method where exception was occurred. This
ordered list of the methods is called Call Stack.Now the following
procedure will happen.
·
The run-time system searches the call stack
to find the method that contains block of code that can handle the occurred
exception. The block of the code is called Exception handler.
·
The run-time system starts searching from the
method in which exception occurred, proceeds through call stack in the reverse
order in which methods were called.
·
If it finds appropriate handler then it
passes the occurred exception to it. Appropriate handler means the type of the
exception object thrown matches the type of the exception object it can handle.
·
If run-time system searches all the methods
on call stack and couldn’t have found the appropriate handler then run-time
system handover the Exception Object to default exception handler ,
which is part of run-time system. This handler prints the exception information
in the following format and terminates program abnormally.
Exception in thread “xxx”
Name in Exception:Description
…… … ……\\ Call Stock
The below diagram to understand the flow of the call stack.
java exception handling
Example:
// Java program to demonstrate how exception
is thrown.
class ThrowsExecp{
public static void main(String
args[]){
String
str = null;
System.out.println(str.length());
}
}
Output:
Exception in thread “main”
Java.lang.NullPointer Exception at ThrowExce.main(file.java:8)
How Programmer handles an exception?
Customized Exception
Handling : Java
exception handling is managed via five keywords: try, catch, throw, throws, and finally. Briefly, here is
how they work. Program statements that you think can raise exceptions are
contained within a try block. If an exception occurs within the try block, it
is thrown. Your code can catch this exception (using catch block) and handle it
in some rational manner. System-generated exceptions are automatically thrown
by the Java run-time system. To manually throw an exception, use the
keyword throw. Any exception that is thrown out of a method must be
specified as such by a throws clause. Any code that
absolutely must be executed after a try block completes is put in a finally
block.
Detailed Article: Control flow in try catch finally block
Need of try-catch
clause(Customized Exception Handling)
//
java program to demonstrate
//
need of try-catch clause
class
GFG {
public
static void main (String[] args) {
//
array of size 4.
int[]
arr = new int[4];
//
this statement causes an exception
int
i = arr[4];
//
the following statement will never execute
System.out.println("Hi,
I want to execute");
}
}
//
java program to demonstrate
//
need of try-catch clause
class
GFG {
public
static void main (String[] args) {
//
array of size 4.
int[]
arr = new int[4];
//
this statement causes an exception
int
i = arr[4];
//
the following statement will never execute
System.out.println("Hi,
I want to execute");
}
}
No comments:
Post a Comment