2013-05-20 263 views
-3

最近我一直在做一些纯粹的Java开发,并且我使用了一个外部库,它公开了少数几个方法,每个方法都有可能抛出一个Exception为什么try/catch在某些情况下需要,而不是其他情况?

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

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

+5

http://docs.oracle.com/javase/tutorial/essential/exceptions/ –

+0

请!在发布问题之前在网上做一些调查! –

+1

具体来说,http://docs.oracle.com/javase/tutorial/essential/exceptions/catchOrDeclare.html –

回答

4

Unchecked exceptions(的ErrorRuntimeException子类)不需要try..catch块,并且在没有try...catch,该方法不需要申报自己是throws(你可以,当然,还有一些考虑宣布throws是一个很好的实践) 。另一方面,检查人确实需要try...catch,或声明throws

+1

我认为你的答案是明确的,但请提供一些例子,请.. – webcoder

3

IndexOutOfBoundsException未经检查例外,即它延伸RuntimeExceptionError,或二者之一的子类,因此一个try/catch块是不必要的。从docs

检查的异常受制于Catch或Specify Requirement。除了由Error,RuntimeException及其子类指示的异常外,所有异常均为检查异常。

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

相关问题