我有什么理由可以避免在下面的示例代码中调用System.exit()
中的方法吗?
public class RBS {
int processClients() {
...
return 0;
}
public static void main(String[] args) {
RBS myBank = new RBS("Royal Bank of Scotland");
System.exit(myBank.processClients());
}
}
答案 0 :(得分:3)
java.lang.System.exit()
方法终止当前运行的Java虚拟机。
java.lang.System.exit()
方法
public static void exit(int status)//Should be an int value.
其中status
- 这是退出状态。
此处您使用的方法值是myBank.processClients()
。因此退出值是上述方法的返回值0
答案 1 :(得分:3)
System.exit()
。终止程序的常规方法是终止所有用户线程。
System.exit()
合适的案例:
System.exit()
方法强制终止Java虚拟机中的所有线程。这是非常激烈的.... System.exit()
应该保留用于灾难性错误退出,或者用于程序打算用作命令脚本中可能依赖于程序退出代码的实用程序的情况。
您可以按如下方式调用此静态方法:
System.exit(int status);
其中status
- 退出状态。
例如,如果status
= 1
,您将获得:
答案 2 :(得分:2)
正如乔恩所说,你并没有在processClients
内打电话给System.exit
。该函数运行,然后该函数返回的值作为退出代码传递给System.exit
。
至于避免它,只要您确定该功能将始终返回您想要的退出代码,您就不必避免它。
答案 3 :(得分:1)
System.exit()是在较大程序中处理关闭的便捷方式。如果有人想退出,他可以简单地调用System.exit(),并负责完成所有必要的关机仪式,如关闭文件,释放资源等。
"此方法永远不会正常返回。"是用文档写的,这意味着该方法不会返回;一旦一个线程进入那里,它就不会再回来了。
请参阅doc
答案 4 :(得分:1)
System.exit()
用于终止当前运行的虚拟机(JVM)。
您提供的代码和类似的代码将在方法调用传递时起作用,因为参数返回一个整数(0/1/-1)
作为结果,因为它们指示进程是否正常终止。
但你为什么要这样编码呢?因为,在我能想到的所有场景中,方法调用总是在调用System.exit(0);
myMethod();
System.exit(0);
与
基本相同System.exit(myMethod());
只要myMethod()
返回正确的数据类型,当然。
答案 5 :(得分:1)
没有理由使用system.exit而不是调用它上面的方法1行。 system.exit只会返回异常关闭,可能导致错误。如果您要正确调用该方法,则无需调用system.exit,并且能够查看代码是否存在任何错误。
为了良好的练习和调试,我建议你使用传统的方法调用而不是system.exit。