我经常发现在调试程序时,在代码块中插入一个return语句很方便(虽然可以说是不好的做法).我可能会在Java中尝试这样的东西....
class Test {
public static void main(String args[]) {
System.out.println("hello world");
return;
System.out.println("i think this line might cause a problem");
}
}
Run Code Online (Sandbox Code Playgroud)
当然,这会产生编译器错误.
Test.java:7:无法访问的语句
我可以理解为什么警告可能是合理的,因为使用未使用的代码是不好的做法.但我不明白为什么这需要产生错误.
这只是Java试图成为一个保姆,还是有充分的理由使这成为编译器错误?
这是一个语言设计问题:
您是否认为无法访问的代码(通常是编程语言)应该发出警告(即"报告问题并反正编译")或错误("拒绝编译")?
就个人而言,我强烈认为这应该是一个错误:如果程序员编写了一段代码,那么它应该始终是为了在某些情况下实际运行它.但是,例如C#编译器似乎不同意这一点,只是报告了一个警告.
注意:我意识到良好的死代码检测是一个非常困难的问题,但这不是这个问题的焦点.
以下是一些代码片段的示例,其中一些语句明显无法访问:
return;
foo();
Run Code Online (Sandbox Code Playgroud)
-
throw new Exception();
foo();
Run Code Online (Sandbox Code Playgroud)
-
if (...) {
return;
} else {
throw new Exception();
}
foo();
Run Code Online (Sandbox Code Playgroud) java ×1