2013-05-20 261 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塊,否則會導致編譯器錯誤。

相關問題