Exception:
Exception in a programming language and in English language is pretty similar. Exception means being different from or not following the rules. And in programming language like Java, exception is an event which occurs during the execution of a program that disturbs the complete flow of application or program.
When something beyond expected happens while executing a program is considered as an error. handling these errors or abnormality is called as Exception handling.
Exception Handling:
Exception handling in java is managed with the help of java keywords and java API support..
1. Java Keywords
2. Java API support
Java Keywords:
There are 5 keywords in Java.
1. Try
2. catch
3. finally
4. throw
and 5. throws
These five keywords used all together or combination of few keywords are used on need basis.
1. Try:
The code or set of instructions which are prone to errors or exceptions are enclosed in try block.
For example dividing a five or some number with zero [5/0]. The result of 5/0 is undefined and in Java, this scenario is considered as exception.
2. Catch:
Usually try block is followed by a catch block. If some exception is occurred in try block, the execution control is moved to catch block instead of continuing the execution of try block's code.
The purpose of catch block is, handling the exceptions that are raised in try.
There is a possibility of handling multiple scenarios in multiple catches.
NOTE: Multiple catches can be written for single try.
Java code example:
try{
--- // code
} catch(OtherException e) {
--- // code
}catch(AnotherException e) {
}
3. Finally:
Usually if there is an exception in try block, the rest of the lines in try are not executed and control moves on to catch block. And if there is no exception at all in try block control never moves to catch block. Then catch block is considered to be dead code.
Then where must we write mandatory code?
So, finally block is written after try and catch which gets executed always.
Java code example:
try{
---
} catch (Exception e) {
---
} finally{
--- // mandatory code for execution
}
NOTE: Always put mandatory code in finally block. For example: closing IO resources connections like network and database connections etc
4. Throws and Throw:
Throws and throw keywords works along with Java API support. I will explain the Java API support for Exception handling in next subsequent articles.
For now, we can understand that for every exception scenario there is one Java class(Java API). Example: Number divided by zero. [5/0]. The result is ArithmeticException
Java code example:
try{
int result = 5/0;
--- // other code
}catch(ArithmeticException e) {
--- // exception of try block is handled here
}
Why there is no "throws" keyword here....?
The alternative solution for above snippet with throws and throw for checking election voting age eligibility exception is:
void votingAgeNumber() throws ArithmeticException{
int age = 12;
if(age <=18) {
throw new ArithmeticException("Age is not sufficient to vote");
}
--- // other code
}
NOTE: Sometimes "throws" keyword works as an alternative solution for try and catch blocks. The throws keyword is used instead of try and catch.
Example:
Solution with throws:
void divideNumber() throws ArithmeticException{
int result = 5/0;
}
And snippet with try and catch:
void divideNumber(){
try{
int result = 5/0;
}catch(ArithmeticException e){
---- // handle exception
}
} // method end
The above both solutions are same, but with different keywords.
Some key points:
1. There can be one try with multiple catch blocks.
2. Try block can be followed by either catch or finally block.
3. Or both can be followed
4. Throws is like warning that exception can be thrown and throw keyword is real accident took place.
I wrote here https://www.allabtjava.com/2021/01/java-api-support-for-exception-handling.html on checked exceptions and runtime or unchecked exceptions.
Happy coding... :)