2021/04/07

[筆記] Effective Java #70 對可復原的情況用受檢異常,對編程錯誤使用運行時異常

Effective Java 3rd 簡體中文版筆記 #70 對可復原的情況用受檢異常,對編程錯誤使用運行時異常
Java 有三種可以拋出的 throwable,分別是受檢異常 (checked exception)運行時異常 (runtime exception)錯誤 (error)
如果是期望調用者可以適當的恢復正常,那就使用受檢異常 (checked exception),強迫調用者處理,同時也表示丟出該受檢異常也是調用該方法的一種結果。如果是程式執行上發生問題無法恢復,或是繼續執行有害無益,那就應該使用運行時異常 (runtime exception),像是 ArrayIndexOutOfBoundExceptionNullPointerException 。Error 則大多會被 JVM 保留下來使用,表示資源不足、約束失敗或是其它讓程式無法繼續執行的條件,像是 OutOfMemoryErrorStackOverflowError。由於這已是普遍接受的慣例,所以不要再實作任何新的 Error 子類。當要實作所有未受檢異常 (unchecked exception) 時,應該是屬於 RunTimeException 的子類。在計劃丟出一個不屬於 ExceptionRuntimeExceptionError 的子類時,或許在程式中象徵某種錯誤且並沒有規定不能這樣作,但何時會拋出這樣的異常? 答案是沒有,這樣的作法反而是會讓使用者感到困擾。

轉載請註明原文網址 https://cookieandcoketw.blogspot.com/2021/03/effective-java-70-exception-type.html

沒有留言:

張貼留言