今天在写程序的时候,不小心出现了一个Unreachable code的编译错误。苦恼了我好久。下面是我的代码:
public void start() {
try {
Scanner scan = new Scanner(System.in);
OutputStream out = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(out,"gbk");
PrintWriter pw = new PrintWriter(out,true);
while(true) {
pw.println(scan.nextLine());
pw.flush();
pw.close();
}
GetMessageHandler handler = new GetMessageHandler();.......................1
} catch (IOException e) {
e.printStackTrace();
}
}
在代码行1处,就报了Unreachable code 的错误。后来仔细思考,发现原来是这样的。因为在代码行1千有一个循环是自己造的一个死循环,即while(true){xxxxxxx},
这也就是说,循环不会停止,自然也就无法执行到循环之后的代码。要想避免这个错误,只需要把该处的代码提前到循环之前或者把循环改为非死循环即可。
当然,出现Unreachable code 这个编译错误还有可能出现在代码写在break;return;之后时发生,原因也是代码不会再往下执行了。这也就是该编译错误的字面意思——“无法达到的代码”!