如何有不';你不需要陷入Java吗?

如何有不';你不需要陷入Java吗?,java,Java,我想抛出一个将在运行时确定的自定义异常。目前,我要么向函数添加抛出,要么用try-catch将其包围起来。我想要的是,这个异常根本不会被发现。这是一个致命的异常,它将向程序员显示错误以及他可以做些什么来修复它。这用于检查是否已首先运行初始化的抽象类。我希望它的行为像一个NullPointerException,当它发生时程序崩溃 谢谢子类而不是异常 我显然不知道这背后的设计决策,但似乎有更好的方法来实现您想要做的任何事情。将自定义异常设置为RuntimeException的子类。这些可能会在tr

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

谢谢

子类而不是异常


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

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

您的程序永远不会崩溃


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

您需要未检查的异常,或者扩展
RuntimeException
类的异常。默认情况下,所有未检查的异常最终由打印异常堆栈跟踪的捕获。除非已将默认未捕获异常处理程序修改为不同的处理程序,否则在引发未选中异常时观察到的行为将与引发
NullPointerException
(另一个未选中异常)时遇到的行为相同


请注意,如果未经检查的异常被执行该异常的调用方捕获而未打印堆栈跟踪,则不会看到异常堆栈跟踪。未检查和检查(扩展
异常
而不是
运行时异常
)异常的捕获方式没有区别;编译器处理选中和未选中异常的方式只有一个区别。

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


然后您就可以捕获(boobake4domaine异常){要确定它是否属于您自己的代码。这可以使您的问题处理代码更简单。

请参阅really extends
java.lang.RuntimeException
,您可以对其进行扩展。您可能应该使用标准异常来完成此操作。当调用方法和其他方法时,可以使用IllegalStateException它所依赖的方法还没有被调用。你对理想行为的描述基本上就是碰撞。@Daniel:是的,但我想表达的是,最好不要只是在终点站倾倒回轨迹。很好地通知并退出。IMO:)我同意@collin hockey的说法,这可能不是最好的方法,但这是可能的ach有时用于从调用堆栈的深处抛出异常,并将其捕获到更高的位置,而不必编写中间的所有
throws
子句。