在没有try-catch的情况下处理异常

时间:2015-05-04 18:41:33

标签: java

假设我们有一个方法(不是主要的),它的主体中有这段代码:

if (a > b) {
    throw new IllegalArgumentException("Fail!");
}

它是否等同于try-catch处理异常或在签名中包含抛出的方式?

4 个答案:

答案 0 :(得分:1)

Java中有两种例外:已检查异常和未经检查的异常。

当抛出已检查的异常时,方法签名必须添加throw声明。调用代码应该在try-catch中包含它。

当抛出未经检查的异常时,方法签名不应添加throw声明。调用代码没有义务在try-catch中接受它。

如何区分这两种例外?未经检查的异常会扩展RuntimeException。

IllegalArgumentException属于未经检查的例外。

答案 1 :(得分:0)

如果抛出异常,则需要捕获它,或者需要向方法添加抛出。

但我觉得你很困惑,因为那是你扔的RuntimeException。 try catch块不需要处理RuntimeException。因此,不需要尝试捕获,因为它不需要一个...

因此,您确实要求检查已检查与未检查的异常之间的区别。

答案 2 :(得分:0)

最好包含一个try catch并处理当异常出现时你要做的事情。

但是你写它的方式,它只是级联,直到它遇到try-catch或处理异常的东西。

答案 3 :(得分:0)

这与try-catch处理或抛出无关。

这里,你的方法抛出一个IllegalArgumentException,它必须在方法定义中处理,抛出为throws IllegalArgumentException,或者这个特定方法的调用者必须使用try-catch来处理IllegalArgumentException这种方法抛出了。