An exception is an unexpected event that occurs during program execution. It affects the flow of the program instructions which can cause the program to terminate abnormally.
An exception can occur for many reasons. Some of them are:
Here is a simplified diagram of the exception hierarchy in Java.
As you can see from the image above, the
Throwable class is the root class in the hierarchy.
Note that the hierarchy splits into two branches: Error and Exception.
Errors represent irrecoverable conditions such as Java virtual machine (JVM) running out of memory, memory leaks, stack overflow errors, library incompatibility, infinite recursion, etc.
Errors are usually beyond the control of the programmer and we should not try to handle errors.
Exceptions can be caught and handled by the program.
When an exception occurs within a method, it creates an object. This object is called the exception object.
It contains information about the exception such as the name and description of the exception and state of the program when the exception occurred.
We will learn how to handle these exceptions in the next tutorial. In this tutorial, we will now focus on different types of exceptions in Java.
The exception hierarchy also has two branches:
A runtime exception happens due to a programming error. They are also known as unchecked exceptions.
These exceptions are not checked at compile-time but at run-time. Some of the common runtime exceptions are:
You can think about it in this way. “If it is a runtime exception, it is your fault”.
NullPointerException would not have occurred if you had checked whether the variable was initialized or not before using it.
ArrayIndexOutOfBoundsException would not have occurred if you tested the array index against the array bounds.
IOException is also known as a checked exception. They are checked by the compiler at the compile-time and the programmer is prompted to handle these exceptions.
Some of the examples of checked exceptions are:
Now we know about exceptions, we will learn about handling exceptions in the next tutorial.