I came across this question and I am unable to understand the reason of the output it is giving.
The program is:
public static String method(){
    String s = new String();
    try
    {
        s = "return value from try block";
        return s;
    }
    catch (Exception e)
    {
        s = s + "return value from catch block";
        return s;
    }
    finally
    {
        s = s + "return value from finally block";
    }
}
The output is:
return value from try block
Now, I debugged it and the value of s at return s statement in try block was return value from try block, return value from catch block after it returned from finally block.
Still the output is :
return value from try block
Can any one please explain this behavior?
 
     
     
    