跳轉到內容

未檢查異常

75% developed
來自華夏公益教科書

導航 異常 主題:v  d  e )


未檢查、未捕獲或執行時異常是可以在未被捕獲或宣告的情況下丟擲的異常。

Example 程式碼部分 6.12:在不宣告或捕獲的情況下丟擲異常。
public void futureMethod() {
  throw new RuntimeException("This method is not yet implemented");
}

...但是,您仍然可以宣告和捕獲此類異常。執行時異常不是業務異常。它們通常與硬編碼問題有關,例如資料錯誤、算術溢位、除以零等。換句話說,無法規避或預測的錯誤。最著名(也是最可怕的)執行時異常是 NullPointerException

執行時異常必須是 RuntimeException 類或 Error 類的子類,或者繼承自它們。

有時為了記錄目的,希望捕獲所有異常,然後重新丟擲它們。例如,在 servlet 程式設計中,當應用程式伺服器呼叫伺服器 getLastModified() 時,我們希望監控請求服務期間是否發生任何異常。應用程式擁有自己的日誌記錄,獨立於伺服器日誌記錄,因此執行時異常將直接透過,而不會被應用程式檢測到。以下程式碼檢查所有異常,記錄它們並重新丟擲它們。

Example 程式碼部分 6.13:記錄異常。
public long getLastModified(HttpServletRequest req) {
  try {
    ...
    return getTimeStamp();
    ...
  } catch(RuntimeException e) {
    log.error("Error during handling post request", e);

    throw e;
  }
}

在上面的程式碼中,所有業務邏輯異常都在 getTimeStamp() 方法中處理。執行時異常被捕獲以進行記錄,然後重新丟擲到伺服器以進行處理。


Clipboard

待辦事項
新增一些類似於 變數 中的練習


華夏公益教科書