3

有什么理由我应该避免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());
    }
}
4

6 回答 6

3

java.lang.System.exit()方法终止当前运行的 Java 虚拟机。

java.lang.System.exit()方法的声明

public static void exit(int status)//Should be an int value. 

where status-- 这是退出状态。

在这里,您正在使用您的方法手段的价值myBank.processClients()。所以退出值就是0上述方法的返回值

更多

于 2015-07-17T15:28:35.460 回答
3

System.exit()应小心使用。终止程序的正常方法是终止所有用户线程。

适合的情况System.exit()

  • 实用程序脚本
  • GUI 应用程序,其中在后台创建事件调度用户线程。

System.exit()方法强制终止 Java 虚拟机中的所有线程。这太严重了....System.exit()应该保留用于灾难性错误退出,或者用于程序打算用作命令脚本中的实用程序的情况,该命令脚本可能取决于程序的退出代码。

您可以按如下方式调用此静态方法:

System.exit(int status);

where status- 退出状态。

例如,如果status= 1,您将得到:

在此处输入图像描述

于 2015-07-17T15:34:49.850 回答
2

正如乔恩所说,您没有processClientsSystem.exit. 该函数运行,然后该函数返回的值System.exit作为退出代码传递给。

至于避免它,只要您确定该函数将始终返回您想要的退出代码,您就不必避免它。

于 2015-07-17T15:31:20.450 回答
1

System.exit()用于终止当前运行的虚拟机 (JVM)。

只要作为参数传递的方法调用返回一个整数(0/1/-1)作为其结果,您提供的代码和类似的代码就可以工作,因为这些表明进程是否正常终止。

但是为什么你会需要这样的编码呢?因为,在我能想到的所有场景中,方法调用总是可以在调用之前进行System.exit(0);

myMethod();
System.exit(0);

基本上是一样的

System.exit(myMethod());

只要myMethod()返回正确的数据类型,当然可以。

于 2015-07-17T15:44:23.000 回答
1

没有理由使用 system.exit 而不是调用它上面的方法 1 行。system.exit 只会返回异常关闭,可能会导致错误。如果您要正确调用该方法,则无需调用 system.exit 并且能够查看您的代码是否会导致任何错误。

为了良好的实践和调试,我建议您使用传统的方法调用而不是 system.exit。

于 2015-07-17T15:44:31.560 回答
1

System.exit() 是处理大型程序关闭的便捷方式。如果有人想退出,他可以简单地调用 System.exit(),它会负责执行所有必要的关闭仪式,例如关闭文件、释放资源等。

“这个方法永远不会正常返回。” 是在 doc 中编写的,这意味着该方法不会返回;一旦一个线程去那里,它就不会回来了。

请参考文档

于 2015-07-17T15:37:46.073 回答