title: Unreachable statement explanation required
body: <p>I'm preparing for OCA Java exam and got this question wrong. I can't see why the <code>return</code> statement is unreachable. My thinking is that even if an exception is thrown it will be caught, the statement in the finally block executed and then the return statement is executed, or is it the case that the thread does not execute the return statement if an exception is thrown? More generally, can somebody explain the rules of what happens in the case of an exception being fired and in which cases statements after the finally block are executed or not. For some questions I am getting this correct and for others I am not so I am not clear on the exact compiler rules here.</p>
  
  <pre><code>public float parseFloat(String s){
     float f = 0.0f;
     try{
        f = Float.valueOf(s).floatValue();
        return f ;
     }
     catch(NumberFormatException nfe){
        System.out.println("Invalid input " + s);
        f = Float.NaN ;
        return f;
     }
     finally { System.out.println("finally");  }
     return f ;
  }
  </code></pre>