无法访问的语句[重复]
Posted
技术标签:
【中文标题】无法访问的语句[重复]【英文标题】:Unreachable statements [duplicate] 【发布时间】:2015-11-30 19:00:33 【问题描述】:我正在为 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
【问题讨论】:
阅读docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html。从方法返回会停止该方法的执行。在屏幕上打印一些东西不会。有很大的不同。 我希望我能参加那场考试,看起来很容易(; @Helenesh 在第二个 sn-p 中根本没有回报。该语句在第一个 sn-p 中是不可访问的,因为在该 print 语句之前有一个 return。在第二个打印语句之前没有返回。 【参考方案1】:这是因为您在调用该语句之前总是返回。请记住,始终会调用 finally
- 即使您使用 return
。
【讨论】:
从 catch 块返回是好的:如果它被执行,那么 try 块可能没有返回任何东西。它从应该避免的 finally 块返回,因为即使 try 块已经返回了一些东西,它也会被执行。 我相信可以返回任何地方,如果你知道你在做什么的话:)(毕竟它是有效的 Java 代码)。不过,在我自己的代码中,我倾向于不返回catch
或 finally
。以上是关于无法访问的语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章