3 回答

TA貢獻1808條經(jīng)驗 獲得超4個贊
不應該捕獲或處理錯誤(除了最罕見的情況)。例外是異常處理的基礎。該Javadoc中解釋說得好:
Error是Throwable的子類,表示合理的應用程序不應該嘗試捕獲的嚴重問題。大多數(shù)此類錯誤都是異常情況。
查看一些子類Error
,獲取他們的一些JavaDoc注釋:
AnnotationFormatError
- 當注釋解析器嘗試從類文件中讀取注釋并確定注釋格式錯誤時拋出。AssertionError
- 拋出表示斷言失敗。LinkageError
- LinkageError的子類表明一個類對另一個類有一些依賴性; 然而,后一類在前一類的編譯后發(fā)生了不相同的變化。VirtualMachineError
- 拋出此異常表示Java虛擬機已損壞或已耗盡其繼續(xù)運行所需的資源。
實際上有三個重要的子類別Throwable
:
Error
- 出現(xiàn)嚴重錯誤的大多數(shù)應用程序應該崩潰而不是試圖解決問題,未經(jīng)檢查的異常(又名
RuntimeException
) - 通常是編程錯誤,例如NullPointerException
非法參數(shù)。應用程序有時可以處理或從此Throwable
類別中恢復- 或者至少使用Thread的run()
方法捕獲它,記錄投訴并繼續(xù)運行。Checked Exception(又名其他所有內容) - 應用程序應該能夠捕獲并有意義地對其余部分執(zhí)行某些操作,例如
FileNotFoundException
和TimeoutException
...

TA貢獻1880條經(jīng)驗 獲得超4個贊
如您所知,錯誤往往表示您的應用程序已結束。它通常無法從中恢復,并且應該導致VM退出。除了在退出之前可能記錄或顯示和適當?shù)南⒅?,不應該捕獲它們。
示例:OutOfMemoryError - 您可以執(zhí)行的操作不多,因為您的程序無法再運行。
例外通常是可以恢復的,即使沒有,它們通常只是意味著嘗試的操作失敗,但您的程序仍然可以繼續(xù)。
示例:IllegalArgumentException - 將無效數(shù)據(jù)傳遞給方法,以便方法調用失敗,但不會影響將來的操作。
這些都是簡單的例子,僅有例外情況就有另外豐富的信息。
添加回答
舉報