假设我们有一个方法(不是主要的),它的主体中有这段代码:
if (a > b) {
throw new IllegalArgumentException("Fail!");
}
它是否等同于try-catch处理异常或在签名中包含抛出的方式?
答案 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这种方法抛出了。