不同类型的运行时异常处理

时间:2017-06-27 08:12:21

标签: java exception-handling

我有一段代码,它可以抛出3种类型的异常,这些异常都会延长运行时异常。

所以,如果我在不同的catch中分别捕获所有这3个异常,那么它会根据发生的异常进入不同的catch。

我只是怀疑,因为所有3个都是RuntimeExceptions,所以它可以只是第一次捕获,因为它也是一个运行时异常,但它不是抛出的异常。

2 个答案:

答案 0 :(得分:4)

答案很简单:

  • 如果您希望/可以对异常执行不同的处理,那么它需要其不同的catch块
  • 当你只做一些通用的事情(比如记录异常)时,那么一个catch块可以完成这项工作。

换句话说:这完全取决于您的要求。当您需要进行不同的异常处理时,需要使用不同的catch块。

重点是,你要么有这个:

try {
  ...
} catch (IllegalArgumentException iae) {
  ...
} catch (NullPointerException ne) {
  ...
...

try {
  ...
} catch (RuntimeException r) {
  ...
}
...

(在那里捕捉像NPE这样的东西真的不推​​荐;我只是用它作为一些RuntimeException的例子)

答案 1 :(得分:1)

简短的回答:不。你的catch区块会捕捉它应该捕获的内容。你告诉它抓住AwesomeRuntimeException,它会抓住那些。只是因为两者都延伸了同一个类,它不会用它来捕捉DistastefulRuntimeException

就像你不能创建一个Car个对象数组然后将Bike个对象放入其中一样,只是因为它们都延伸Vehicle