Java - 如果方法调用System.exit会不好?

时间:2015-02-12 15:15:22

标签: java exit

调用System.exit(0)的最佳做法是什么?

我故意打电话给System.exit(0)。有什么方法可以拨打System.exit(0)

我应该创建一个调用System.exit(0)的方法吗?

感谢。

2 个答案:

答案 0 :(得分:6)

"最佳实践" 理由 执行

如果您确实希望立即终止该程序,而不是让程序的上层决定该怎么做,您应该致电:System.exit(1)(或其他一些非零积极的退出状态)。

  • 退出代码0向shell(和父进程)说正常执行;

  • 正退出代码报告存在错误。你期望可能出错的东西实际上是错误的;

  • 否定退出代码是指您没有预料到的错误(系统错误 - 意外异常 - 外部强制终止,例如kill -9);

答案 1 :(得分:1)

这个警告的动机(我猜你正在查看一个findbugs结果,但许多其他工具也有这个)如下:

直接致电System.exit()时。您无法在单元测试或应用程序服务器中使用此代码。在这两种情况下,您的代码都在框架内运行,并且您不希望此框架退出。

但是,当您拥有独立应用程序时,您最终可能希望退出。这可以通过两种方式完成:通过完成任务来结束所有非恶意线程的执行,或者通过调用System exit来结束。在使用第三方库的大型应用程序中,第一种选择通常不可行或不可行。

所以我个人试图限制我的应用程序执行一个或两个系统退出(例如当用户请求关闭应用程序时)。将它们排除在复杂代码的任何部分之外,以便您可以测试和重用这些部分。