Java throws keyword
The Java throws keyword is used to declare an exception. It gives an information to the programmer that there may occur an exception. So, it is better for the programmer to provide the exception handling code so that the normal flow of the program can be maintained.
Exception Handling is mainly used to handle the checked exceptions. If there occurs any unchecked exception such as NullPointerException, it is programmers’ fault that he is not checking the code before it being used.
Syntax of Java throws
Which exception should be declared?
Ans: Checked exception only, because:
- unchecked exception: under our control so we can correct our code.
- error: beyond our control. For example, we are unable to do anything if there occurs VirtualMachineError or StackOverflowError.
Advantage of Java throws keyword
Now Checked Exception can be propagated (forwarded in call stack).
It provides information to the caller of the method about the exception.
Java throws Example
Let’s see the example of Java throws clause which describes that checked exceptions can be propagated by throws keyword.
Testthrows1.java
Output:
exception handled normal flow...
Rule: If we are calling a method that declares an exception, we must either caught or declare the exception.
There are two cases:
- Case 1: We have caught the exception i.e. we have handled the exception using try/catch block.
- Case 2: We have declared the exception i.e. specified throws keyword with the method.
Case 1: Handle Exception Using try-catch block
In case we handle the exception, the code will be executed fine whether exception occurs during the program or not.
Testthrows2.java
Output:
exception handled normal flow...
Case 2: Declare Exception
- In case we declare the exception, if exception does not occur, the code will be executed fine.
- In case we declare the exception and the exception occurs, it will be thrown at runtime because throws does not handle the exception.
Let’s see examples for both the scenario.
A) If exception does not occur
Testthrows3.java
Output:
device operation performed normal flow...
B) If exception occurs
Testthrows4.java
Output:
Difference between throw and throws
Que) Can we rethrow an exception?
Yes, by throwing same exception in catch block.