无法访问的语句[重复]

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 代码)。不过,在我自己的代码中,我倾向于不返回 catchfinally

以上是关于无法访问的语句[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Java 编译器不会为无法访问的 then 语句生成无法访问的语句错误?

无法访问受保护的成员[重复]

为啥我在 Java 中出现无法访问的语句错误?

它显示无法访问的语句错误

上传 2 张图片时无法访问的语句

编译错误 - 无法访问的语句