Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 捕获应用程序停止异常时是否应使用System.exit(1)?_Java_Exception_Exception Handling - Fatal编程技术网

Java 捕获应用程序停止异常时是否应使用System.exit(1)?

Java 捕获应用程序停止异常时是否应使用System.exit(1)?,java,exception,exception-handling,Java,Exception,Exception Handling,假设我有以下代码: try { //Do something with File } catch (FileNotFoundException e) { outputInfo("Error in IO Redirection", true); e.printStackTrace(); System.exit(1); } 我的程序就在这个捕获位置之后退出,是一个单线程(一个主方法)程序,不应该期望从这样的异常中恢复 我真的应该使用System.exit(1)?如果

假设我有以下代码:

try {
    //Do something with File
} catch (FileNotFoundException e) {
    outputInfo("Error in IO Redirection", true);
    e.printStackTrace();
    System.exit(1);
}
我的程序就在这个捕获位置之后退出,是一个单线程(一个主方法)程序,不应该期望从这样的异常中恢复


我真的应该使用
System.exit(1)

如果您希望其他人运行您的程序,并且他们依赖进程状态代码来了解您的程序是否成功,那么您应该使用
系统。退出(1)

终止当前运行的Java虚拟机。争论 用作状态代码;按照惯例,非零状态代码 表示异常终止


在应用程序失败时使用非零退出代码的原因之一是它们可以在批处理文件中使用。如果您的应用程序是控制台应用程序,请始终使用正确的退出代码。你不知道它将来会怎么用

在system.exit中使用整数1-127表示程序异常终止。如果您不想在catch block之后执行任何其他操作,您可以使用它或捕获异常并打印正确的错误消息。您考虑用什么替代
系统。退出(1)?别无选择,我只是想知道当我使用
系统时需要考虑什么。退出(1)System.exit(1)
肯定会产生干扰,这是否意味着您可能必须在调用exit之前复制完成代码?您可以将
exit
语句从
catch
块中删除,或者创建一个将在JVM终止时执行的语句(在调用
exit
之后)。我同意。我喜欢未来证明,退出代码在我遇到的程序中很少见到,奇怪的是。。。也许对大多数人来说,开销太大了。