爲什麼我能有在Java中,如何避免處理某些異常而不處理其他異常?
public void someMethod() {
throw new UnsupportedOperationException();
}
但不
public void someMethod() {
throw new throw new IOException();
}
首先是罰款,第二生成編譯錯誤「未處理的異常類型爲IOException」。
爲什麼我能有在Java中,如何避免處理某些異常而不處理其他異常?
public void someMethod() {
throw new UnsupportedOperationException();
}
但不
public void someMethod() {
throw new throw new IOException();
}
首先是罰款,第二生成編譯錯誤「未處理的異常類型爲IOException」。
所有可以拋出的東西都是Throwable
。有兩種類型的Throwable
:
一個Exception
子類是RuntimeException
,這是 「未登記」 - 這意味着你不必申報或趕上他們。這些通常用於「編程錯誤」,如NullPointerException
或ArrayOutOfBoundsException
。
Errors
也是「未登記」,並且是「不可恢復」的情況,如OutOfMemoryError
等
任何Throwable的不的Error
或RuntimeException
是「檢查」和拋出或捕獲必須聲明一個子類。
在java中有兩種類型的異常; checked
和unchecked
。
您有來捕捉或指定您的方法拋出checked
異常。你的第二個例子就是這種情況,IOException
。
http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
因爲RuntimeException
S和它的子類是「未登記」異常和不需要聲明拋出或捕獲。檢查異常。
JLS 11, Exceptions涵蓋了詳盡的細節中的例外情況,JLS 11.2, Compile-Time Checking of Exceptions討論了高層次的差異。
喲需要看看檢查和未經檢查的異常之間的區別。
IOException是一個檢查異常,而UnsupportedOperationException是一個RuntimeException(未選中)。檢查的異常必須被捕獲或重新拋出。 http://java.sun.com/docs/books/jls/second_edition/html/exceptions.doc.html
UnsupportedOperationException
是RuntimeException這是一種未經檢查的異常。這些是執行程序期間出現的例外情況,並指示不可能從中恢復的狀態。
檢查異常,您必須以某種方式處理的類型是異常,您可能會編寫代碼進行優雅處理。
Java語言規範,section 11.2.5,規定非常好:
運行時異常類(它是RuntimeException及其子類) 從編譯時檢查豁免,因爲在 的設計師的判斷Java編程語言必須聲明這樣的例外,這對於建立程序的正確性 沒有太大的幫助。
有兩種類型背後的想法的一些很好的解釋。 Java教程有一個標題爲Unchecked Exceptions — The Controversy的頁面,如果需要更長時間的討論,請參見Checked or Unchecked Exceptions?
IOException是一個「已檢查」異常,必須處理。