我想抛出一个将在运行时确定的自定义异常。目前我必须向函数添加抛出或使用try catch将其包围。我想要的是这个例外根本不被发现。这是一个致命的例外,它将向程序员显示错误以及他可以做些什么来解决它。这是一个抽象类,检查是否先运行了初始化。我希望它像NullPointerException一样,当它发生时程序崩溃。
由于
答案 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) {
确定上游是否是你自己的一个。这可以使您的问题处理代码更加简单。