一個完整的後端服務,例外處理是至關重要的環節。例外處理不僅涉及到系統的穩定性,還關系到使用者體驗。在SpringBoot 中,透過使用
@ControllerAdvice
和
@ExceptionHandler
註解,我們可以輕松地實作全域例外處理。
上期,我們在 SpringBoot 中實作了統一返回結果類,統一例外處理類和統一返回結果類都是一個完整的後端服務必不可少的。有需要回顧 SpringBoot 實作了統一返回結果類,可以點選下方文章標題,即可跳轉對應文章哦!
今天,我們就來了解如何在 SpringBoot 中建立一個統一的例外處理類。範例程式碼如下:
@Slf4j
@ControllerAdvice
public classGlobalExceptionHandler {
// 處理所有未指定的異常
@ExceptionHandler(Exception. class)
public ResponseEntity<Result> handleException(Exception e) {
Resultresult = newResult<>();
result.setSuccess(false);
result.setMessage("伺服器內部錯誤");
result.setCode(500);
// 記錄日誌,便於問題追蹤
log.error("發生異常:", e);
// 返回統一的錯誤響應
returnnewResponseEntity<>(result, HttpStatus.INTERNAL_SERVER_ERROR);
}
// 處理自訂異常
@ExceptionHandler(CustomException. class)
public ResponseEntity<Result> handleCustomException(CustomException e) {
Resultresult = newResult<>();
result.setSuccess(false);
result.setMessage(e.getMessage());
result.setCode(e.getCode());
// 記錄日誌
log.error("發生自訂異常:", e);
// 返回統一的錯誤響應
returnnewResponseEntity<>(result, HttpStatus.BAD_REQUEST);
}
}
在上面的程式碼中,我們定義了一個名為 GlobalExceptionHandler 的類,並使用
@ControllerAdvice
註解來指定這是一個全域例外處理器。
@ExceptionHandler
註解用於指定該方法處理的異常型別。對於所有未被捕獲的通用異常,我們使用 Exception. class 來捕獲並處理。對於自訂的異常 CustomException ,我們則返回更具體的異常資訊和狀態碼。
今天的程式碼大賞就到這裏了。希望透過這篇文章,你能夠對在 SpringBoot 中實作一個統一例外處理類有一個更深入的理解。
完整程式碼片段來源於程式碼小抄,歡迎點選進入小程式閱讀!
線上存取:https://www.codecopy.cn/post/fi8ebr
在程式碼小抄可以看到更多優質程式碼,也歡迎大家積極分享,可能會獲得我們官方的小禮品 🎁~
往期推薦