我正在攻读OCA考试,我不明白为什么parseFloat()中的最后一行无法访问,而go()中的最后一行则不然。除了返回类型,我没有看到太大的区别。
public float parseFloat(String s) {
float f = 0.0F;
try {
f = Float.valueOf(s).floatValue();
return f;
} catch (NumberFormatException e) {
f = Float.NaN;
return f;
} finally {
return f;
}
System.out.println(""); //unreachable statement
}
public void go() {
System.out.println("A");
try {
System.out.println(3 / 0);
} catch (ArithmeticException e) {
System.out.println("b");
} finally {
System.out.println("c");
}
System.out.println("d"); //reachable statement
}
答案 0 :(得分:4)
这是因为在调用该语句之前,总是返回。请记住,即使您使用finally
,也始终会调用return
。