考虑一下这个功能:
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的代码),它实际上应该在返回void
,main()
的方法中。这样更好。
关于可达性,解释是相同的:return
是Java语言的关键字,因此IDE使用的编译器或解析器可以告诉您,从理论上讲,执行return
语句后代码是不可能的。这些规则定义为here。
关于java - 为什么在System.exit(0)之后仍需要返回?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11487184/