2011-05-30 77 views
2

我最近在一次Interview中问了一个关于扩展java.lang.RuntimeException的问题。我为什么要扩展java.lang.RuntimeException

我被要求引用一个例子,其中将需要扩展java.lang.RuntimeException。

我一直认为我们不需要延长RuntimeException,任何人都可以启发我吗?

感谢, SB

+0

我不想查找RuntimeException的定义或可能的原因。任何人都可以给出一个扩展RuntimeException的例子和理由。此外,我相信这不是让我迷惑。 – 2011-05-30 09:57:03

+0

可能重复的[何时选择checked和unchecked exceptions](http://stackoverflow.com/questions/27578/when-to-choose-checked-and-unchecked-exceptions) – LisaMM 2015-07-09 12:08:20

回答

4

一层的运行时异常是另一个层的检查(并采取行动)异常。

我可以看到容器例如servlet容器; REPL和/或任何顶级解释器循环;等等合法地选择和捕获RuntimeExceptions,因为它们不应该仅仅因为某些事情在堆栈中进一步发展而崩溃。

与容器壳体相似,穿过邻接边界例如交叉层或层通常需要更明确的异常语义。

如果“原因”和/或消息属性在语义上证明不足以表达超出“嗨,它坏了”的任何内容,并且客户端/更高层可以有选择地行动,那么对于子类RuntimeException来说可以说是合理的。

0

的RuntimeException是 那些可以在 Java虚拟机的正常运行期间抛出的异常 超类。

的方法不需要申报 其throws子句中 RuntimeException的可能方法的执行过程中被抛出 但 没有抓到的任何子类。

RuntimeException

0

RuntimeException是那些可能在Java虚拟机的正常运行期间抛出的异常的超类。

如果您向jdk添加新功能,或者您修改了jvm实现,则应该扩展RuntimeException以添加新的RuntimeException。

3

您希望在创建不必显式捕获的异常(未检查异常)时扩展RuntimeException。这是异常情况,表示通常无法恢复的问题(例如死数据库)。

您应该在take a look处查看Java中已检查和未检查的异常之间的差异。

0

您应该留意这些不应该扩展的异常,因为它通常应该用在不能执行更多操作并且应该中断操作的地方。

但是如果你需要为这种情况找到一个应用程序,你可以说通过创建不同类型的RuntimeException,我们可以有更多的控制在异常处理程序中显示异常等消息,但恕我直言,这只是玩游戏。

0

当客户无法合理地从程序恢复,我会抛出运行时异常, 这些都是典型的unchecked异常,在代码中大多的错误,该客户端不能指望在运行时

例子来恢复:死链接数据源,JNDI绑定失败,某些操作的前置条件失败(分母为零的分区)是此RuntimeException子类的场景

相关问题