Class HttpClientException

java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
io.leandev.appfuse.http.exception.HttpClientException
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
ClientErrorException, ServerErrorException

public class HttpClientException extends RuntimeException

HTTP 客戶端異常基礎類別

所有 HTTP 客戶端相關的異常都繼承此類別。 此異常攜帶 HTTP 狀態碼資訊,便於異常處理器進行適當的回應轉換。 由 StandardHttpClient 根據下游回應建立時,另帶有 DownstreamHttpFailure,讓 REST handler 能區分「本服務的語義化錯誤」與「下游錯誤」。

設計理念

  • 輕量級:只攜帶狀態碼和訊息,不依賴外部框架
  • 零依賴:純 Java RuntimeException,無需額外依賴
  • 類型安全:透過子類別提供語義化的異常類型

使用範例

// 拋出異常
throw new NotFoundException("User not found");

// 捕捉異常
try {
    httpClient.execute(request);
} catch (NotFoundException e) {
    // 處理 404 錯誤
} catch (HttpClientException e) {
    // 處理其他 HTTP 錯誤
    int statusCode = e.getStatusCode();
}
See Also:
  • Constructor Details

    • HttpClientException

      public HttpClientException(int statusCode, String message)
      建立 HTTP 客戶端異常
      Parameters:
      statusCode - HTTP 狀態碼(例如:404, 500)
      message - 錯誤訊息
    • HttpClientException

      public HttpClientException(int statusCode, String message, Throwable cause)
      建立 HTTP 客戶端異常,包含原始異常
      Parameters:
      statusCode - HTTP 狀態碼
      message - 錯誤訊息
      cause - 原始異常
  • Method Details

    • getStatusCode

      public int getStatusCode()
      取得 HTTP 狀態碼
      Returns:
      HTTP 狀態碼
    • isDownstreamResponse

      public boolean isDownstreamResponse()

      判斷此例外是否來自下游 HTTP 回應。

      應用程式直接建立的語義化例外不會帶有此標記。

      Returns:
      來自下游回應時為 true
    • getDownstreamFailure

      public Optional<DownstreamHttpFailure> getDownstreamFailure()

      取得下游失敗診斷脈絡。

      此資訊只應用於伺服器端映射政策、audit 或 log,不應直接回傳給 API caller。

      Returns:
      下游失敗脈絡;本服務自行建立的例外為 empty