[Java] RuntimeException以外的異常


Answers

是的,有三種

檢查異常

編譯器會讓你知道什麼時候可能拋出,最有可能的是由於環境的失敗。

如果程序能夠做到這一點,就應該被抓住,否則最好放手。

他們大多數繼承自

java.lang.Exception

或從

java.lang.Throwable

雖然從前者繼承比較好。

例如:

java.io.IOException

表示發生了某種I / O異常。 這個類是由失敗或中斷的I / O操作產生的一般異常類。

錯誤

這些是特殊的例外。 他們不應該因為什麼時候發生而意味著真的發生了真正的壞事。

他們都繼承自

java.lang.Error

例如:

java.lang.OutOfMemoryError

在Java虛擬機由於內存不足而無法分配對象時拋出,並且垃圾收集器無法提供更多的內存。

要么

java.lang.StackOverflowError

由於應用程序遞歸太深而發生堆棧溢出時拋出。

RuntimeExceptions

用於識別程序員失敗,而不是資源失敗。

運行時異常在編碼時可以“正常”地避免。 如果你有一個很可能你做錯了什麼。

有時會發現運行時異常,但除非您確切地知道您在做什麼以及為什麼 ,否則捕獲它們是一種不好的做法(再次,除非您正是您所需要的)

他們繼承

java.lang.RuntimeException 

例如

java.lang.ArrayIndexOutOfBoundsException

拋出以指示已經使用非法索引訪問數組。 該索引是否定的或者大於或等於數組的大小

要么

java.lang.NullPointerException

當應用程序試圖在需要對象的情況下使用null時拋出

關於最後兩個, 大多數時候,他們可以通過仔細編程避免,並了解程序的狀態是什麼(這個數組有5個元素?為什麼我應該嘗試訪問-1或6。我為什麼要調用null.toString())

雖然我曾經和那些聲稱應該抓住所有NPE的傢伙吵架。 那麼我能說什麼呢。

Question

在Java中,除RuntimeException之外是否有發生異常的可能性? 謝謝。