如何获得不需要在Java中捕获的异常?

时间:2011-08-05 18:23:18

标签: java

我想抛出一个将在运行时确定的自定义异常。目前我必须向函数添加抛出或使用try catch将其包围。我想要的是这个例外根本不被发现。这是一个致命的例外,它将向程序员显示错误以及他可以做些什么来解决它。这是一个抽象类,检查是否先运行了初始化。我希望它像NullPointerException一样,当它发生时程序崩溃。

由于

5 个答案:

答案 0 :(得分:14)

子类RuntimeException而非Exception。

我显然不知道这背后的设计决定,但似乎可能有更好的方法来实现你想要做的任何事情。

答案 1 :(得分:3)

使您的自定义异常成为RuntimeException的子类。这些可能会在try / catch中捕获,但编译器不强制执行此操作。

答案 2 :(得分:2)

你的程序永远不应该崩溃。

理想情况下,它应该记录回溯和任何有助于调试问题的相关信息,然后退出通知出现问题以及记录详细信息的位置。

答案 3 :(得分:0)

您需要未经检查的异常或扩展RuntimeException类的异常。默认情况下,所有未经检查的异常最终都会被打印异常堆栈跟踪的default uncaught exception handler捕获。除非您已将默认的未捕获异常处理程序修改为另一个异常处理程序,否则在抛出未经检查的异常时观察到的行为将与您在抛出NullPointerException(另一个未经检查的异常)时遇到的行为相同。

请注意,如果未经检查的异常被作用于它的调用者捕获而未打印堆栈跟踪,则不会看到异常堆栈跟踪。取消选中和检查(延伸Exception而不是RuntimeException)例外的方式没有区别;编译器处理已检查和未检查的异常只有一个区别。

答案 4 :(得分:0)

您应该创建一个扩展Boobake4DomainException的基本异常(可能名为RuntimeException),然后为所有运行时异常扩展

然后你可以} catch (Boobake4DomainException e) {确定上游是否是你自己的一个。这可以使您的问题处理代码更加简单。