欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Springboot全局異常處理

 更新時間:2021年11月01日 16:15:37   作者:超多多和劉寶寶的代碼世界  
這篇文章主要給大家介紹了關于Springboot全局異常處理的資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SpringBoot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

對于作為菜鳥程序員的我來說,經常在controller使用try-catch 來包裹住我的service層代碼,首頁,他及其的不好看,其次,每個方法都有這種代碼塊,思考有沒有辦法去掉它,并且優(yōu)雅的處理異常。這就是今天要說的全局異常捕獲

提示:以下是本篇文章正文內容,下面案例可供參考

一、思路?

springboot提供了全局異常處理的注解,我們需要弄明白的是。撲捉什么異常,結果如果返回,如何優(yōu)雅的管理返回的結果集。

二、步驟

1.自定義接口:

自定義接口主要是描述返回的code碼和返回msg,自定義錯誤描述枚舉需要實現(xiàn)這個接口

public interface ErrorType {
    /**
     * 返回code
     *
     * @return
     */
    String getCode();
    /**
     * 返回mesg
     *
     * @return
     */
    String getMesg();
}

2.自定義錯誤枚舉

使用枚舉,看起來代碼很優(yōu)雅,并且不用使用static final來定義類型。

@Getter
public enum SystemErrorType implements ErrorType {
    SYSTEM_ERROR("-1", "系統(tǒng)異常"),
    SYSTEM_BUSY("000001", "系統(tǒng)繁忙,請稍候再試");
    /**
     * 錯誤類型碼
     */
    private String code;
    /**
     * 錯誤類型描述信息
     */
    private String mesg;
    SystemErrorType(String code, String mesg) {
        this.code = code;
        this.mesg = mesg;
    }
}

3.自定義異常類

@Getter
public class MyException extends RuntimeException{
    /**
     * 異常對應的錯誤類型
     */
  private final ErrorType errorType;
   /**
    * 默認是系統(tǒng)異常
    */
   public MyException () {
       this.errorType = SystemErrorType.SYSTEM_ERROR;
   }
   public MyException(SystemErrorType systemErrorType) {
	   this.errorType = systemErrorType;
    }

4.異常捕獲

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandlerAdvice extends DefaultGlobalExceptionHandlerAdvice {
    @ExceptionHandler(value = {MyException .class})
    public Result MyException (MyException ex) {
        log.error(ex.getMessage());
        return Result.fail(ex.getErrorType());
    }
    @ExceptionHandler(value = {NotRoleException.class})
    public Result NotRoleException(NotRoleException nle) {
        // 打印堆棧,以供調試
        //nle.printStackTrace();
        String message = "該功能僅供"+nle.getRole()+"使用!";
        // 返回給前端
        return Result.fail("090017",message,null);
    }
}

也不是說只能通過枚舉來返回,只要你的返回工具類支持參數(shù)填寫,可以做類似于第二種的返回,但是這樣方法對于返回的code來太好管理

5.在代碼中拋異常

比如我做判空處理時,利用枚舉作為參數(shù)返回

    @PostMapping("/listQuestionVO")
    public Result listQuestionBankVO(@RequestBody QuestionBankQuery query){
        if (query.getPageNum()==null || query.getPageSize()==null){
            return Result.fail(QuestionnaireErrorType.PARAMETERISNULL_ERROR);
        }
        Result result = questionBankService.listQuestionBankVO(query);
        return result;
    }

實際上,你可以在你需要處理異常的地方直接throws異常,可以直接在方法上throws拋出,等待全局異常捕獲

總結

只要管理code到位,用返回類型的工具類來替換枚舉更適合小白

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

相關文章

  • Spring啟動流程refresh()源碼深入解析

    Spring啟動流程refresh()源碼深入解析

    這篇文章主要給大家介紹了關于Spring啟動流程refresh()源碼深入解析的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Java反射機制用法總結

    Java反射機制用法總結

    反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態(tài)獲取的信息以及動態(tài)調用對象的方法的功能稱為java語言的反射機制。下面我們來一起學習一下吧
    2019-05-05
  • Java實現(xiàn)自定義枚舉值校驗器的示例代碼

    Java實現(xiàn)自定義枚舉值校驗器的示例代碼

    這篇文章主要為大家詳細介紹了Java實現(xiàn)自定義枚舉值校驗器的相關資料,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • Spring循環(huán)依賴正確性及Bean注入的順序關系詳解

    Spring循環(huán)依賴正確性及Bean注入的順序關系詳解

    這篇文章主要給大家介紹了關于Spring循環(huán)依賴的正確性,以及Bean注入的順序關系的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-01-01
  • java的前期綁定和后期綁定使用示例

    java的前期綁定和后期綁定使用示例

    java的前期綁定在程序執(zhí)行前根據編譯時類型綁定,調用開銷較小,如C語言只有前期綁定這種方法調用
    2014-02-02
  • log4j控制日志輸出文件名稱的兩種方式小結

    log4j控制日志輸出文件名稱的兩種方式小結

    這篇文章主要介紹了log4j控制日志輸出文件名稱的兩種方式小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java如何獲取List<String>中的String詳解

    Java如何獲取List<String>中的String詳解

    工作了這么長時間了,一直沒有記錄的習慣,以至于導致我即便是查過的東西總會忘記,下面這篇文章主要給大家介紹了關于Java如何獲取List<String>中String的相關資料,需要的朋友可以參考下
    2022-02-02
  • Java ArrayList與LinkedList及HashMap容器的用法區(qū)別

    Java ArrayList與LinkedList及HashMap容器的用法區(qū)別

    這篇文章主要介紹了Java ArrayList與LinkedList及HashMap容器的用法區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-07-07
  • Java模擬QQ實現(xiàn)聊天互動程序

    Java模擬QQ實現(xiàn)聊天互動程序

    這篇文章主要介紹了如何利用Java語言模擬QQ實現(xiàn)一個簡易的聊天互動程序,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-06-06
  • Java內部類_動力節(jié)點Java學院整理

    Java內部類_動力節(jié)點Java學院整理

    內部類是指在一個外部類的內部再定義一個類。下面通過本文給大家java內部類的使用小結,需要的朋友參考下吧
    2017-04-04

最新評論