I am trying to understand how the try-catch-finally
execution flow works. There are a couple of solutions from Stack Overflow users regarding their execution flow.
One such example is:
try { // ... some code: A } catch(...) { // ... exception code: B } finally { // finally code: C }
Code A is going to be executed. If all goes well (i.e. no exceptions get thrown while A is executing), it is going to go to
finally
, so code C is going to be executed. If an exception is thrown while A is executed, then it will go to B and then finally to C.
However, I got different execution flows when I tried it:
try {
int a=4;
int b=0;
int c=a/b;
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally {
System.out.println("common");
}
I am getting two different outputs:
First output:
java.lang.ArithmeticException: / by zero
at substrings.main(substrings.java:15)
lication.AppMain.main(AppMain.java:140)
common
However, when I ran the same program for the second time:
Second output:
common
java.lang.ArithmeticException: / by zero
at substrings.main(substrings.java:15)
What should I conclude from this? Is it going to be random?