我最近在一次Interview中问了一个关于扩展java.lang.RuntimeException的问题。我为什么要扩展java.lang.RuntimeException
我被要求引用一个例子,其中将需要扩展java.lang.RuntimeException。
我一直认为我们不需要延长RuntimeException,任何人都可以启发我吗?
感谢, SB
我最近在一次Interview中问了一个关于扩展java.lang.RuntimeException的问题。我为什么要扩展java.lang.RuntimeException
我被要求引用一个例子,其中将需要扩展java.lang.RuntimeException。
我一直认为我们不需要延长RuntimeException,任何人都可以启发我吗?
感谢, SB
一层的运行时异常是另一个层的检查(并采取行动)异常。
我可以看到容器例如servlet容器; REPL和/或任何顶级解释器循环;等等合法地选择和捕获RuntimeExceptions,因为它们不应该仅仅因为某些事情在堆栈中进一步发展而崩溃。
与容器壳体相似,穿过邻接边界例如交叉层或层通常需要更明确的异常语义。
如果“原因”和/或消息属性在语义上证明不足以表达超出“嗨,它坏了”的任何内容,并且客户端/更高层可以有选择地行动,那么对于子类RuntimeException来说可以说是合理的。
的RuntimeException是 那些可以在 Java虚拟机的正常运行期间抛出的异常 超类。
的方法不需要申报 其throws子句中 RuntimeException的可能方法的执行过程中被抛出 但 没有抓到的任何子类。
RuntimeException是那些可能在Java虚拟机的正常运行期间抛出的异常的超类。
如果您向jdk添加新功能,或者您修改了jvm实现,则应该扩展RuntimeException以添加新的RuntimeException。
您希望在创建不必显式捕获的异常(未检查异常)时扩展RuntimeException。这是异常情况,表示通常无法恢复的问题(例如死数据库)。
您应该在take a look处查看Java中已检查和未检查的异常之间的差异。
您应该留意这些不应该扩展的异常,因为它通常应该用在不能执行更多操作并且应该中断操作的地方。
但是如果你需要为这种情况找到一个应用程序,你可以说通过创建不同类型的RuntimeException,我们可以有更多的控制在异常处理程序中显示异常等消息,但恕我直言,这只是玩游戏。
当客户无法合理地从程序恢复,我会抛出运行时异常, 这些都是典型的unchecked异常,在代码中大多的错误,该客户端不能指望在运行时
例子来恢复:死链接数据源,JNDI绑定失败,某些操作的前置条件失败(分母为零的分区)是此RuntimeException子类的场景
我不想查找RuntimeException的定义或可能的原因。任何人都可以给出一个扩展RuntimeException的例子和理由。此外,我相信这不是让我迷惑。 – 2011-05-30 09:57:03
可能重复的[何时选择checked和unchecked exceptions](http://stackoverflow.com/questions/27578/when-to-choose-checked-and-unchecked-exceptions) – LisaMM 2015-07-09 12:08:20