Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java Exception Handling via Catch Block [duplicate]

Tags:

java

exception

When I am executing following code

1.    public class test {
2.      public static void main(String[] args) {
3.          try {
4.              int i = 10 / 0;
5.          } catch (Exception e) {
6.              int j = 10 / 0;
7.          } finally {
8.              int k = 10 / 0;
9.          }
10.     }
11.    }

I am getting an error:

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at test.main(test.java:8)

I am not getting the reason why JVM is throwing exception from main() and not the catch block.

like image 882
Yogesh Prajapati Avatar asked Dec 09 '25 10:12

Yogesh Prajapati


1 Answers

If you follow the step-by-step description of a try-catch-finally in the JLS, you see that (in summary) if catch throws an exception then finally is executed and (emphasis mine):

If the catch block completes abruptly for reason R, then the finally block is executed.

If the finally block completes abruptly for reason S, then the try statement completes abruptly for reason S (and reason R is discarded).

So the exception thrown by the catch block (which is executed before the finally block) is discarded and the reported exception is the one thrown in the finally block.

like image 149
assylias Avatar answered Dec 12 '25 01:12

assylias



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!