为什么要扩展java.lang.RuntimeException
我最近被问到一个问题,显然是在一次采访中,关于扩展java.lang.RuntimeException 我被要求引用一个需要扩展java.lang.RuntimeException的例子 我一直认为我们不需要扩展RuntimeException,有人能告诉我吗 谢谢, 某人为什么要扩展java.lang.RuntimeException,java,exception-handling,Java,Exception Handling,我最近被问到一个问题,显然是在一次采访中,关于扩展java.lang.RuntimeException 我被要求引用一个需要扩展java.lang.RuntimeException的例子 我一直认为我们不需要扩展RuntimeException,有人能告诉我吗 谢谢, 某人 RuntimeException是的超类 那些可以抛出的异常 在系统正常运行期间 Java虚拟机 不需要在中声明方法 它的任何子类 可能引发的运行时异常 在方法执行期间,但是 没有被抓住 请参见RuntimeExceptio
RuntimeException是的超类 那些可以抛出的异常 在系统正常运行期间 Java虚拟机 不需要在中声明方法 它的任何子类 可能引发的运行时异常 在方法执行期间,但是 没有被抓住
请参见RuntimeException是Java虚拟机正常运行期间可以引发的异常的超类
如果向jdk添加新功能或修改jvm实现,则应扩展RuntimeException以添加新的RuntimeException。在创建不必显式捕获的异常(未选中的异常)时,您希望扩展RuntimeException。这是异常的情况,表示通常无法恢复的问题(例如,死数据库)
您应该了解Java中检查异常和未检查异常之间的区别 您应该遵守这些规则,不应扩展此异常,因为它通常应用于不能执行更多操作且操作应被中断的地方
但是,如果您需要为这种情况找到一个应用程序,您可以说,通过创建不同类型的RuntimeException,我们可以有更多的控制in-out异常处理程序来显示异常等消息。但是,我认为这只是一个游戏 当客户端无法从程序中合理恢复时,我会抛出运行时异常, 这些通常是未经检查的异常,主要是代码中的bug,客户端不希望在运行时恢复
示例:到数据源的死链接、JNDI绑定失败、某些操作的前置条件失败(分母为零的除法)都是此RuntimeException子类化的场景 我可以看到容器,例如servlet容器;REPLs和/或任何顶级解释器循环;等等。合法地选择和捕获运行时异常,因为它们不应该仅仅因为堆栈中的某些内容更深而崩溃 与容器的情况类似,跨越相邻边界(例如,跨越层或层)通常需要更明确的异常语义
如果'cause'和/或message属性在语义上不足以表达除“hey,it break”之外的任何内容,并且客户机/更高层可以有选择地采取行动,那么子类RuntimeException可以说是合法的 我不是在寻找RuntimeException的定义或可能的原因。有人能给出一个扩展RuntimeException的例子和理由吗。此外,我相信这不会让我感到困惑。可能是