当前位置: 首页 > 面试题库 >

为什么在Java中收到“无法到达的语句”错误?

萧德馨
2023-03-14
问题内容

当我尝试编译该程序时,在第21行出现“无法到达的语句”错误:

import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.lang.StringBuilder;

class FilePrep {
    public static void main(String args[]) {
    }
    public String getStringFromBuffer() {
        try {
            Path file = Paths.get("testfile2.txt");
            FileInputStream fstream = new FileInputStream("testfile2.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));  
                String inputLine = null;                    
            StringBuffer theText = new StringBuffer();

            while((inputLine=br.readLine())!=null) {
                theText.append(inputLine+" ");
            }
            return theText.toString();
            System.out.println(theText); // <-- line 21
        }
        catch (Exception e)
        {
            System.err.println("Error: " + e.getMessage());
            return null;
        }
    }
}

完整的编译器输出为:

Main.java:21: error: unreachable statement
            System.out.println(theText);
            ^
Main.java:28: error: missing return statement
    }
    ^
2 errors

认为
这些return语句在正确的地方…至少在我看来似乎是正确的,并且与我从中克隆的程序相比,该程序看起来是如此简单,以至于我很难确定为什么要这样做。语句无法到达。

复制代码时我做错了什么,我该如何纠正?


问题答案:

您以为您的问题在这里是对的:

return theText.toString();
System.out.println(theText);

return函数将 终止 您的方法,这意味着将不执行任何超出代码的行。如果您希望打印通过,则应将其移至return语句上方。



 类似资料:
  • 问题内容: 我经常在调试程序时发现在代码块中插入return语句很方便(尽管可能是不好的做法)。我可能会在Java中尝试类似的方法.... 当然,这会产生编译器错误。 Test.java:7:无法访问的语句 我能理解为什么警告是合理的,因为有未使用的代码是不好的做法。但是我不明白为什么这需要产生一个错误。 这只是Java试图成为一个保姆,还是有充分的理由使它成为编译器错误? 问题答案: 因为无法到

  • 问题内容: 是否有可能以某种方式忽略此错误?我发现将自己不想运行的代码放在前面比注释它要容易得多(当注释重叠并且表现不佳时)… 问题答案: 否。这是编译时错误。因此,在运行课程之前,您 必须 摆脱它。 我通常要做的是在其前面放置一个虚假陈述。就像是: 使用此代码,您将不会出错。您将得到想要的东西。

  • 问题内容: ABstractMethodError的可能原因是什么? 线程“ pool-1-thread-1”中的异常java.lang.AbstractMethodError: 问题答案: 简单的答案是这样的:一些代码试图调用一个声明的方法。抽象方法没有主体,无法执行。由于您提供的信息很少,因此我无法真正详细说明如何发生这种情况,因为编译器通常会遇到此问题- 如此处所述,这意味着该类必须在运行时

  • 问题内容: 这样编译: 另一方面,这不是: 并给出不可达的语句System.out.println(“ hello”); 错误。为什么会这样呢? 问题答案: 最后有一个返回,因此您可能会遇到无法到达的代码块错误。 这实际上是Java中的编译时错误。参见第14.20节。 如果由于语句无法访问而无法执行该语句,则是编译时错误。

  • //div class=“vp-btnc-text”xpath=“1”>cs-核心容量规划 Chropath提供的相对路径://div[contains(text(),'CS-Core Capacity Planning')] 我正在尝试的代码行是:driver.find_element_by_xpath('//div[contains(),'CS-Core Capacity Planning')

  • 本文向大家介绍Java中无法访问的语句错误,包括了Java中无法访问的语句错误的使用技巧和注意事项,需要的朋友参考一下 由于多种原因导致无法编译代码时,发生无法访问的代码错误,其中包括:无限循环,无法访问的代码行之前的return语句。 让我们看一个例子- 示例 输出结果 名为Demo的类包含主函数,并定义了一个值,并检查该值并运行空的“ for”循环。如果找到该值,则控件会跳出循环,否则将显示一