当前位置: 首页 > 面试题库 >

我想引发异常时退出程序的最佳方法?

钱修雅
2023-03-14
问题内容

我正在编写一个Java程序,该程序读取一个单词文件。程序至关重要地依赖于此文件,因此,无论出于何种原因,在读取文件时都出现IOException,我确实希望程序结束。

结束程序的最佳方法是什么?我认为我被迫将文件读取包围在try /
catch块中,因此我应该System.exit(0)在catch中添加一个内部吗?例如,我应该做以下事情吗?

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指出的那样,您可能想IOExceptionmain方法中捕获,然后在其中调用System.exit,以提供易于理解的错误消息(堆栈跟踪可能会吓到人们)。另外,正如@MeBigFatGuy所说,System.exit从代码堆栈内部进行调用是一种不好的做法,并限制了代码的可重用性。如果必须使用System.exit,则将其保留在main方法主体内。



 类似资料:
  • 问题内容: 我想要一种一致且简单的方法来在JNI代码中引发异常;处理链式异常的东西(隐式地来自env-> ExceptionOccurred方法,或者由参数显式表示,无论哪种方式都不错),并且每次执行此操作时都无需查找构造函数。尽管我可以根据需要从C ++进行翻译,但上述所有内容最好都用C语言编写。 SO上是否有人可以分享这样的东西? 问题答案: 我们只是为要抛出的每种异常类型编写实用程序方法。这

  • 我有一个rest服务,它将抛出一个异常,我想知道什么将是最好的方式来处理这一点。 我想知道这是rest服务中处理异常的正确方式吗? 我在用泽西。

  • 我有一个可为空的变量,通过它我可以通过获取(同样为空)。 我想做的是

  • 问题内容: 除了抛出,这意味着我方法的所有调用者都需要捕获Exception(可以包含RuntimeExceptions),我想在出现问题时抛出一种更特定类型的异常。 我可以创建自己的扩展了Exception或其他异常类型的异常类型,但是我很好奇是否可以重用Java语言所附带的一些异常,例如: IllegalArgumentException UnsupportedOperationExcepti

  • 本文向大家介绍Android开发退出程序的方法汇总,包括了Android开发退出程序的方法汇总的使用技巧和注意事项,需要的朋友参考一下 Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面呐喊教程小编就给大家介绍android开发退出程序的几种方法。 1、finish()方法 f

  • 问题内容: 当整数溢出发生而不是静默失败时,是否可能引发某种运行时异常。例如 由于溢出而打印,我想得到某种运行时异常 问题答案: 是的,从Java-8开始,您可以使用新的Exact方法,它将在溢出时引发异常(java.lang.ArithmeticException:整数溢出)。例如