亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot的統(tǒng)一異常處理,使用@RestControllerAdvice詳解

 更新時間:2024年12月14日 14:53:49   作者:無足鳥丶  
@RestControllerAdvice是Spring Boot中的全局異常處理注解,結(jié)合了@ControllerAdvice和@ResponseBody的功能,通過創(chuàng)建自定義異常類和全局異常處理器,可以實現(xiàn)統(tǒng)一異常處理,確保API的一致性和響應(yīng)的標(biāo)準(zhǔn)化

springboot統(tǒng)一異常處理,使用@RestControllerAdvice

@RestControllerAdviceSpring Boot 中用于全局異常處理的注解,它結(jié)合了 @ControllerAdvice@ResponseBody 的功能。

這意味著使用 @RestControllerAdvice 注解的類將應(yīng)用于所有 @RequestMapping 方法,并且任何從這些方法返回的對象都會被轉(zhuǎn)換為 HTTP 響應(yīng)體。

下面是如何使用 @RestControllerAdvice 實現(xiàn)統(tǒng)一異常處理的一個示例:

創(chuàng)建自定義異常類

首先,創(chuàng)建一些自定義異常類來表示不同的錯誤情況。

例如:

public class ResourceNotFoundException extends RuntimeException {
    public ResourceNotFoundException(String message) {
        super(message);
    }
}

定義API錯誤響應(yīng)格式

為了確保API返回的一致性,可以創(chuàng)建一個標(biāo)準(zhǔn)的錯誤響應(yīng)結(jié)構(gòu),如 ApiError 類:

public class ApiError {
    private HttpStatus status;
    private String message;
    private LocalDateTime timestamp;

    public ApiError(HttpStatus status, String message, Throwable throwable) {
        this.status = status;
        this.message = message;
        this.timestamp = LocalDateTime.now();
    }

    // Getters and Setters...
}

使用@RestControllerAdvice創(chuàng)建全局異常處理器

然后,你可以創(chuàng)建一個帶有 @RestControllerAdvice 注解的類,用來處理不同類型的異常:

@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<ApiError> handleResourceNotFoundException(ResourceNotFoundException ex) {
        ApiError apiError = new ApiError(HttpStatus.NOT_FOUND, ex.getMessage(), ex);
        return new ResponseEntity<>(apiError, HttpStatus.NOT_FOUND);
    }

    @ExceptionHandler(Exception.class)
    public ResponseEntity<ApiError> handleAllExceptions(Exception ex) {
        ApiError apiError = new ApiError(HttpStatus.INTERNAL_SERVER_ERROR, "An error occurred", ex);
        return new ResponseEntity<>(apiError, HttpStatus.INTERNAL_SERVER_ERROR);
    }

    // 你可以添加更多特定的 @ExceptionHandler 方法來處理其他類型的異常
}

配置全局異常屬性(可選)

你還可以在 application.propertiesapplication.yml 文件中配置一些全局的行為,

例如是否顯示堆棧跟蹤信息:

# application.properties
server.error.include-stacktrace=never

或者在 YAML 文件中:

# application.yml
server:
  error:
    include-stacktrace: never

通過這種方式,@RestControllerAdvice 提供了一種簡潔的方法來集中處理整個應(yīng)用程序中的異常,確保所有異常都能以一致的方式響應(yīng)客戶端請求。

此外,由于它自帶了 @ResponseBody 功能,所以特別適合 RESTful Web 服務(wù)。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java處理表格的實用工具庫

    Java處理表格的實用工具庫

    EasyExcel是一個基于Java的簡單、省內(nèi)存的讀寫Excel的開源項目,在盡可能節(jié)約內(nèi)存的情況下支持讀寫百M的Excel,下面這篇文章主要給大家分享介紹了一個關(guān)于Java處理表格的實用工具庫,需要的朋友可以參考下
    2021-11-11
  • Java中Calendar時間操作常用方法詳解

    Java中Calendar時間操作常用方法詳解

    這篇文章主要為大家詳細介紹了Java中Calendar時間操作常用方法,calendar中set方法和靜態(tài)屬性帶來的一些坑,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 一段眼睛跟著鼠標(biāo)轉(zhuǎn)動的跟蹤眼代碼

    一段眼睛跟著鼠標(biāo)轉(zhuǎn)動的跟蹤眼代碼

    java實現(xiàn)的眼睛跟著鼠標(biāo)轉(zhuǎn)動的跟蹤眼代碼
    2008-10-10
  • Spring Boot集成mongodb數(shù)據(jù)庫過程解析

    Spring Boot集成mongodb數(shù)據(jù)庫過程解析

    這篇文章主要介紹了Spring Boot集成mongodb數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java double類型比較大小詳解

    Java double類型比較大小詳解

    這篇文章主要介紹了Java double類型比較大小,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot中實現(xiàn)數(shù)據(jù)字典的示例代碼

    SpringBoot中實現(xiàn)數(shù)據(jù)字典的示例代碼

    這篇文章主要介紹了SpringBoot中實現(xiàn)數(shù)據(jù)字典的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • MybatisPlus?LambdaQueryWrapper使用int默認值的坑及解決

    MybatisPlus?LambdaQueryWrapper使用int默認值的坑及解決

    這篇文章主要介紹了MybatisPlus?LambdaQueryWrapper使用int默認值的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • java應(yīng)用cpu占用過高問題分析及解決方法

    java應(yīng)用cpu占用過高問題分析及解決方法

    這篇文章主要介紹了java應(yīng)用cpu占用過高問題分析及解決方法,具有一定參考價值,需要的朋友可以參考下。
    2017-09-09
  • Java交換map的key和value值的步驟和代碼示例

    Java交換map的key和value值的步驟和代碼示例

    在Java中,我們都知道直接交換Map的key和value是不被允許的,因為Map的接口設(shè)計是基于key-value對的,其中key是唯一的,并且是不可變的,所以本文給大家介紹了Java交換map的key和value值的步驟和代碼示例,需要的朋友可以參考下
    2024-09-09
  • Java阻塞隊列必看類:BlockingQueue快速了解大體框架和實現(xiàn)思路

    Java阻塞隊列必看類:BlockingQueue快速了解大體框架和實現(xiàn)思路

    這篇文章主要介紹了Java阻塞隊列必看類:BlockingQueue快速了解大體框架和實現(xiàn)思路,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論