This week's book giveaways are in the Refactoring and Agile forums.
We're giving away four copies each of Re-engineering Legacy Software and Docker in Action and have the authors on-line!
See this thread and this one for details.
Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Agile forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

return

 
Kedar Dravid
Ranch Hand
Posts: 333
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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?
 
Barry Gaunt
Ranch Hand
Posts: 7729
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Where is it printing 1?
 
Mike Gershman
Ranch Hand
Posts: 1272
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If a NumberFormatException is not thrown, the finally clause will execute, then the first return statement, so the last return statement is not reached.

If a NumberFormatException is thrown, the catch clause is executed but the return action is delayed, then the finally clause is executed, then the delayed return action occurs. The final return statement is still not executed.
[ March 11, 2005: Message edited by: Mike Gershman ]
 
Kedar Dravid
Ranch Hand
Posts: 333
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks, Mike!
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic