为什么我收到Java中的不可达语句错误?(Why am I getting an Unreachab

2019-07-30 10:22发布

当我尝试编译这个程序 ,我得到了第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声明是在正确的地方......他们似乎至少对我来说,程序看起来比我克隆它从一个如此简单,说我有一个很艰难的时间搞清楚为什么这种说法是不可达。

我做了什么错,而复制的代码,我需要怎么纠正呢?

Answer 1:

你是正确的假设,你的问题就在这里:

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

return功能将终止你的方法,这意味着没有行代码过去,它就会被执行。 如果您希望您的打印穿过去,你应该将其归还上述声明。



Answer 2:

你有return语句后的声明。 这里有两个问题的线路:

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

开关周围。

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


Answer 3:

return时执行的语句,该方法放弃控制它的调用者。 这就是为什么println将无法运行; 这就是为什么编译器会抱怨。

不可到达的语句是在你的程序中的逻辑错误的某些和可靠的指标。 这意味着,你把不会被执行的语句,但你认为他们会。 编译器分析流量,并报告这些语句给您的错误消息。



Answer 4:

print语句来return语句之后。 该功能将永远退出它到达打印语句之前。 “无法接通”

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

开关使用的两行的顺序,它会工作。



Answer 5:

return语句总是要在年底或定义块的最后一行。 如果你把任何语句后return语句这些语句是由控制器无法访问报表。 通过使用return语句我们告诉控制应该回到它的调用者明确。

例如

public class Z
{
    public int test()
    {
        System.out.println(10);
        return 10;
        System.out.println(20);
    }
}

在这个例子中,我们得到编译时错误因为unreachable code ,因为控制不能达到最后一条语句执行。

所以,总是return说法应该是定义块的最后一条语句。



文章来源: Why am I getting an Unreachable Statement error in Java?