系统退出的替代方案(1)

2022-09-01 18:35:00

由于各种原因,在编写Java应用程序时不赞成调用,那么我如何通知调用过程并非所有事情都按计划进行?System.exit

编辑:1 是任何非零退出代码的 a。standin


答案 1

当“应用程序”实际上是更大的Java应用程序(服务器)的子应用程序(例如servlet,applet)时,使用是令人不快的:在这种情况下,可以停止JVM,因此也可以停止所有其他子应用程序。在这种情况下,抛出一个适当的异常,可以由应用程序框架/服务器捕获和处理是最佳选择。System.exitSystem.exit

如果 Java 应用程序确实要作为独立应用程序运行,则使用 没有错。在这种情况下,设置退出值可能是向父进程传达失败或成功的最简单(也是最常用的)方法。System.exit


答案 2

我同意“抛出一个例外”的人群。一个原因是,如果您希望其他代码能够使用它,则调用 System.exit 会使代码难以使用。例如,如果您发现您的类在 Web 应用程序或某种消息消耗应用程序中很有用,那么允许这些容器有机会以某种方式处理故障会很好。容器可能想要重试操作,决定记录并忽略问题,向管理员发送电子邮件等。

一个例外是你的方法;这可能会捕获异常,并使用调用进程或 shell 脚本可以识别的某个值进行调用。main()System.exit()


推荐