最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Springboot全局異常處理

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

前言

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

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

一、思路?

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

二、步驟

1.自定義接口:

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

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

2.自定義錯(cuò)誤枚舉

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

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

3.自定義異常類(lèi)

@Getter
public class MyException extends RuntimeException{
    /**
     * 異常對(duì)應(yīng)的錯(cuò)誤類(lèi)型
     */
  private final ErrorType errorType;
   /**
    * 默認(rèn)是系統(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) {
        // 打印堆棧,以供調(diào)試
        //nle.printStackTrace();
        String message = "該功能僅供"+nle.getRole()+"使用!";
        // 返回給前端
        return Result.fail("090017",message,null);
    }
}

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

5.在代碼中拋異常

比如我做判空處理時(shí),利用枚舉作為參數(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;
    }

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

總結(jié)

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

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java為什么基本數(shù)據(jù)類(lèi)型不需要進(jìn)行創(chuàng)建對(duì)象?

    Java為什么基本數(shù)據(jù)類(lèi)型不需要進(jìn)行創(chuàng)建對(duì)象?

    今天小編就為大家分享一篇關(guān)于Java為什么基本數(shù)據(jù)類(lèi)型不需要進(jìn)行創(chuàng)建對(duì)象?,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • 淺談java中的聲明常量為什么要用static修飾

    淺談java中的聲明常量為什么要用static修飾

    這篇文章主要介紹了淺談java中的聲明常量為什么要用static修飾的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 支付寶APP支付(IOS手機(jī)端+java后臺(tái))版

    支付寶APP支付(IOS手機(jī)端+java后臺(tái))版

    這篇文章主要為大家詳細(xì)介紹了支付寶APP支付(IOS手機(jī)端+java后臺(tái))版,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • java Beanutils.copyProperties( )用法詳解

    java Beanutils.copyProperties( )用法詳解

    這篇文章主要介紹了java Beanutils.copyProperties( )用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java concurrency之集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency之集合_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java集合主體內(nèi)容包括Collection集合和Map類(lèi);而Collection集合又可以劃分為L(zhǎng)ist(隊(duì)列)和Set(集合),有需要的小伙伴可以參考下
    2017-06-06
  • Java序列化JSON丟失精度問(wèn)題的解決方法(修復(fù)Long類(lèi)型太長(zhǎng))

    Java序列化JSON丟失精度問(wèn)題的解決方法(修復(fù)Long類(lèi)型太長(zhǎng))

    這篇文章主要給大家介紹了關(guān)于Java序列化JSON丟失精度問(wèn)題的解決方法,修復(fù)Long類(lèi)型太長(zhǎng)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • spring boot啟動(dòng)加載數(shù)據(jù)原理分析

    spring boot啟動(dòng)加載數(shù)據(jù)原理分析

    實(shí)際應(yīng)用中,我們會(huì)有在項(xiàng)目服務(wù)啟動(dòng)的時(shí)候就去加載一些數(shù)據(jù)或做一些事情這樣的需求。這時(shí)spring Boot 為我們提供了一個(gè)方法,通過(guò)實(shí)現(xiàn)接口 CommandLineRunner 來(lái)實(shí)現(xiàn)。下面給大家詳細(xì)介紹下,需要的的朋友參考下吧
    2017-04-04
  • 微服務(wù)eureka和nacos案例詳解

    微服務(wù)eureka和nacos案例詳解

    這篇文章主要介紹了微服務(wù)eureka和nacos,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Spring Boot統(tǒng)一異常處理詳解

    Spring Boot統(tǒng)一異常處理詳解

    我們?cè)谧鯳eb應(yīng)用的時(shí)候,請(qǐng)求處理過(guò)程中發(fā)生錯(cuò)誤是非常常見(jiàn)的情況。這個(gè)時(shí)候就需要統(tǒng)一異常處理了,這篇文章主要給大家介紹了Spring Boot如何進(jìn)行統(tǒng)一異常處理的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-02-02
  • springboot?vue前后端接口測(cè)試樹(shù)結(jié)點(diǎn)添加功能

    springboot?vue前后端接口測(cè)試樹(shù)結(jié)點(diǎn)添加功能

    這篇文章主要為大家介紹了springboot?vue前后端接口測(cè)試樹(shù)結(jié)點(diǎn)添加功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05

最新評(píng)論

梓潼县| 汉中市| 巴彦县| 手机| 浑源县| 潜江市| 邵阳县| 历史| 文安县| 江都市| 嘉善县| 营口市| 唐海县| 彭阳县| 三台县| 武城县| 潞城市| 昭苏县| 永福县| 浙江省| 乌鲁木齐县| 朝阳县| 广河县| 新丰县| 清苑县| 夹江县| 铁岭市| 兰州市| 五指山市| 嘉定区| 宁武县| 石渠县| 巴林右旗| 洛隆县| 民丰县| 德兴市| 安塞县| 洞口县| 万全县| 吉首市| 平安县|