未檢查異常
外觀
| 導航 異常 主題: |
未檢查、未捕獲或執行時異常是可以在未被捕獲或宣告的情況下丟擲的異常。
程式碼部分 6.12:在不宣告或捕獲的情況下丟擲異常。
public void futureMethod() {
throw new RuntimeException("This method is not yet implemented");
}
|
...但是,您仍然可以宣告和捕獲此類異常。執行時異常不是業務異常。它們通常與硬編碼問題有關,例如資料錯誤、算術溢位、除以零等。換句話說,無法規避或預測的錯誤。最著名(也是最可怕的)執行時異常是 NullPointerException。
執行時異常必須是 RuntimeException 類或 Error 類的子類,或者繼承自它們。
有時為了記錄目的,希望捕獲所有異常,然後重新丟擲它們。例如,在 servlet 程式設計中,當應用程式伺服器呼叫伺服器 getLastModified() 時,我們希望監控請求服務期間是否發生任何異常。應用程式擁有自己的日誌記錄,獨立於伺服器日誌記錄,因此執行時異常將直接透過,而不會被應用程式檢測到。以下程式碼檢查所有異常,記錄它們並重新丟擲它們。
程式碼部分 6.13:記錄異常。
public long getLastModified(HttpServletRequest req) {
try {
...
return getTimeStamp();
...
} catch(RuntimeException e) {
log.error("Error during handling post request", e);
throw e;
}
}
|
在上面的程式碼中,所有業務邏輯異常都在 getTimeStamp() 方法中處理。執行時異常被捕獲以進行記錄,然後重新丟擲到伺服器以進行處理。
