-2

我最近一直在做一些纯 Java 开发,我正在使用一个外部库,它公开了少量方法,每个方法都有可能抛出一个Exception.

try-catch除非我将每个调用都包装在一个块中,否则 Eclipse 不会让我编译我的程序。到目前为止,没什么大不了的。

然后我注意到一些东西,比如ArrayList.add(),它会抛出IndexOutOfBoundsException。我怎么可以调用这样的东西而无需将其包装在 a 中try..catch?Obv,在这种特殊情况下,如果您每次都必须这样做,那将是令人难以置信的烦人,但是try-catch在某些情况下如何以及为什么强制执行,而不是其他情况?

4

2 回答 2

5

未经检查的异常(或的子类ErrorRuntimeException不需要try..catch块,当try...catch,方法不需要声明自己是throws(当然,你可以,有些人认为声明throws是一个好习惯)。另一方面,选中的确实需要try...catch, 或声明throws

于 2013-05-20T14:11:31.853 回答
3

IndexOutOfBoundsException是一个未经检查的异常,即它扩展了RuntimeExceptionorError或任何一个的子类,因此不需要 try/catch 块。从文档

已检查的异常受 Catch 或 Specify Requirement 的约束。除了 Error、RuntimeException 及其子类所指示的异常之外,所有异常都是已检查异常。

相反,检查的异常需要一个try/catch块,否则会导致编译器错误。

于 2013-05-20T14:11:24.727 回答