In my last tutorial, we discussed about finally block, which is used with a try block and always execute whether exception occurs or not. Here we will see few examples to understand the behaviour of finally block when a return statement is encountered in try block.
Lets see this code snippet, What do you think? Will finally would execute even if there is a return statement in try block as well as in catch block?
try { //try block ... return success; } catch (Exception ex) { //catch block ..... return failure; } finally { System.out.println("Inside finally"); }
The answer is yes. finally block will execute. The only case where it will not execute is when it encounters System.exit().
Finally: Example with return statement
class FinallyDemo { public static int myMethod() { try { //try block return 0; } finally { //finally System.out.println("Inside Finally block"); } } public static void main(String args[]) { System.out.println(FinallyDemo.myMethod()); } }
Output:
Inside Finally block 0
Does finally block Override the values returned by try-catch block?
Yes. Finally block overrides the value returned by try and catch blocks, lets take an example to understand this:
public static int myTestingFuncn(){ try{ .... return 5; } finally { .... return 19; } }
This program would return value 19 since the value returned by try has been overridden by finally.
Leave a Reply