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