Java—如果一个方法调用System.exit,这是否不好?

Java—如果一个方法调用System.exit,这是否不好?,java,exit,Java,Exit,调用系统退出(0)的最佳实践是什么 我有意呼叫系统。退出(0)。调用系统退出(0)的正确方法是什么 我是否应该创建一个调用System.exit(0)的方法 谢谢。“最佳实践”实际上是基于你想执行什么而制定的 如果您确实希望立即终止程序,而不是让程序的高层决定要做什么,则应调用:System.exit(1)(或其他非零正退出状态) 退出代码0告诉shell(和父进程)执行正常完成 肯定的退出代码报告有错误。你以为会出错的事情实际上出了问题 负面退出代码是指您未预料到的错误(系统错误-意外异常-

调用
系统退出(0)
的最佳实践是什么

我有意呼叫
系统。退出(0)
。调用
系统退出(0)
的正确方法是什么

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

谢谢。

“最佳实践”实际上是基于你想执行什么而制定的

如果您确实希望立即终止程序,而不是让程序的高层决定要做什么,则应调用:
System.exit(1)
(或其他非零正退出状态)

  • 退出代码
    0
    告诉shell(和父进程)执行正常完成

  • 肯定的退出代码报告有错误。你以为会出错的事情实际上出了问题

  • 负面退出代码是指您未预料到的错误(系统错误-意外异常-外部强制终止,例如
    kill-9


此警告的动机(我猜您看到的是findbugs结果,但许多其他工具也有此结果)如下:

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

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


因此,我个人尝试将我的应用程序限制为执行一个或两个系统退出(例如,当用户请求关闭应用程序时)。不要让它们出现在代码中任何复杂的部分,这样您就可以测试和重用它们。

什么报告了此警告?如果不在方法中,你在哪里调用
System.exit(0)
?重复-我不同意接受的答案。你为什么调用
System.exit(0)
?还有一个相关的问题可能会有所帮助-我们什么时候应该在Java中调用System.exit:是否有注释告诉FindBugs/SpotBugs:“我知道我在做什么”-过滤文件很乏味