Consider the following example from JQPlus:
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 ;
}
Which of the following statements about the above method are true?
a If input: "0.1" then it will return 0.1 and print finally.
b If input: "0x.1" then it will return Float.Nan and print Invalid Input 0x.1and finally.
c If input: "1" then it will return 1 and print finally.
d If input: "0x1" then it will return 0.0 and print Invalid Input 0x1 and finally.
e The code will not compile.
Answer: e
Explanation given:.
Note that the return statement after finally block is unreachable. Otherwise, choices 1, 2, 3 are valid.
I can't understand why/how the return statement is unreachable.
Also, assuming it is unreachable, shouldn't choice 3(c) print 1.0 and not 1?