java - 当我想要抛出异常时退出程序的最佳方法是什么?

标签 java exception-handling

我正在编写一个读取单词文件的 Java 程序。程序主要依赖于这个文件,所以我真的希望程序在读取文件时无论出于何种原因出现 IOException 时结束。

结束程序的最佳方式是什么?我想我被迫将我的文件读取包围在一个 try/catch block 中,所以我应该在我的 catch 中添加一个 System.exit(0) 吗?例如,我应该执行以下操作吗?

try {
  BufferedReader br = new BufferedReader(new FileReader("myfile.txt"));
  String line;
  while ((line = br.readLine()) != null) {
    // process...
  }
} catch(IOException e) {
  System.out.println("Error: " + e);
  System.exit(0); // ???
}

最佳答案

如果让异常一直传播到 main() 方法,程序将结束。无需调用System.exit,只需让异常自然地冒泡(通过添加throws IOException)到必要的方法中。

编辑:正如@Brian 指出的那样,您可能希望在 main 方法中捕获 IOException,并在那里调用 System.exit相反,提供人类可读的错误消息(堆栈跟踪会吓到人们)。此外,正如@MeBigFatGuy 所说,从代码堆栈内部调用 System.exit 是不好的做法,并且会限制代码的可重用性。如果您必须使用 System.exit,请将其保留在 main 方法的主体内。

关于java - 当我想要抛出异常时退出程序的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6171265/

相关文章:

java - 为什么 play.libs.Json.toJson 返回一个空对象?

java - 如何使用elasticsearch api高效地对大量数据进行搜索?

spring - Spring REST Controller 的异常处理程序

exception-handling - 在try/catch block 之后使用finally block 与编写代码

swift - 从没有 throws 的继承函数中抛出异常

java - 如果未处理 RuntimeException,我可以将 Eclipse 设置为显示警告吗?

java - 在哪里复制 apache tomcat 服务器中的 servlet 文件才能与 Web 正常工作?

java - 如何检测变量是否已更改?

java - Jdbc 脚本给出重复值

c++ - 在C++中,异常/错误是否也设置错误号?