考虑一下这个功能:

public boolean foo(){
   System.exit(1);
   //The lines beyond this will not be read
   int bar = 1;                  //L1
   //But the return statement is required for syntactically correct code
   return false;                 //L2

   //error here for unreachable code
   //int unreachable = 3;        //L3

}

有人可以解释一下为什么L1和L2显然无法到达时没有给出警告,而L3却给出了警告。

最佳答案

因为就编译器而言,System.exit()只是另一个方法调用。

它所做的只是结束过程,这只能从实现中找到(它是 native 代码,而没有任何区别)。

如果必须在代码中放入System.exit()(通常最好避免使用它,除非您想返回非0的代码),它实际上应该在返回voidmain()的方法中。这样更好。

关于可达性,解释是相同的:return是Java语言的关键字,因此IDE使用的编译器或解析器可以告诉您,从理论上讲,执行return语句后代码是不可能的。这些规则定义为here

关于java - 为什么在System.exit(0)之后仍需要返回?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11487184/

10-11 22:58
查看更多