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

詳解如何在SpringBoot項目中使用全局異常處理

 更新時間:2022年10月19日 16:44:49   作者:picacho_pkq  
在完整的項目開發(fā)中,異常的出現(xiàn)幾乎是無法避免的;如果凡是有可能出現(xiàn)異常的地方,我們都手動的使用try-catch將其捕獲的話,會使得代碼顯得十分臃腫并且后期不好維護。本文介紹了pringBoot項目中使用全局異常處理的方法,需要的可以參考一下

在完整的項目開發(fā)中,異常的出現(xiàn)幾乎是無法避免的;如果凡是有可能出現(xiàn)異常的地方,我們都手動的使用try-catch將其捕獲的話,雖然也能達到處理異常的效果,但是這樣做會使得代碼顯得十分臃腫并且后期不好維護,也不利于多人系統(tǒng)開發(fā)。

在Spring Boot中提供了統(tǒng)一處理異常的方法,SpringBoot中有一個ControllerAdvice的注解,使用該注解表示開啟了全局異常的捕獲,我們只需在自定義一個方法使用ExceptionHandler注解然后定義捕獲異常的類型即可對這些捕獲的異常進行統(tǒng)一的處理。接下來就用一個小demo來演示一下全局異常處理的方法。

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

接著上一篇在Spring Boot項目中使用統(tǒng)一返回結果一文中,繼續(xù)添加全局異常處理部分。

NotLoginException.java

@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class NotLoginException extends RuntimeException{

    private Integer errorCode;
    private String message;

}

2.創(chuàng)建全局異常處理器

定義全局異常處理器,用來捕獲項目中拋出的自定義異常和普通異常,然后按照統(tǒng)一的數(shù)據(jù)格式返回給前端。在項目中不管是返回失敗結果,還是返回成功結果,我們都統(tǒng)一返回數(shù)據(jù)的格式。

MyExceptionHandler.java

@ControllerAdvice
public class MyExceptionHandler {

    /**
     * 捕獲我們自定義的異常
     * @param notLoginException
     * @return
     */
    @ExceptionHandler(NotLoginException.class)
    @ResponseBody
    public Result notLoginExceptionHandler(NotLoginException notLoginException){
        return ResultGenerator.genErrorResult(notLoginException.getErrorCode(), notLoginException.getMessage());
    }

    /**
     * 捕獲其他異常
     * @param exception
     * @return
     */
    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result otherException(Exception exception){
        return ResultGenerator.genErrorResult(Constants.RESULT_CODE_SERVER_ERROR, exception.getMessage());
    }


    // 可以定義區(qū)分更細粒度的異常,然后在此處進行捕獲

}

3.創(chuàng)建測試控制器

ExceptionController.java

@Controller
public class ExceptionController {


    @GetMapping("/notLoginException/{id}")
    @ResponseBody
    public Result notLoginException(@PathVariable("id") Integer id){
        if(id != null && id == 1){
            // 拋出一個自定義的異常
            throw new NotLoginException(Constants.RESULT_CODE_BAD_REQUEST, "沒有登陸");  // 這里一般會定一個枚舉,定義每一個狀態(tài)碼對應的信息
        }
        return ResultGenerator.genSuccessResult();
    }


    @GetMapping("/exception")
    @ResponseBody
    public Result exception(){
        int num = 1 / 0;
        return ResultGenerator.genSuccessResult();
    }
}

測試自定義異常,先正常給參數(shù),接著給錯誤參數(shù),讓其拋出異常。

測試其他異常。

在Spring Boot項目中全局異常處理的方法大致相同,只需要前期制定好需要處理那些異常,然后定義好枚舉來映射異常信息,采用上述方法統(tǒng)一處理即可。

以上就是詳解如何在SpringBoot項目中使用全局異常處理的詳細內容,更多關于SpringBoot全局異常處理的資料請關注腳本之家其它相關文章!

相關文章

  • SpringCloud中的Feign服務間的調用詳解

    SpringCloud中的Feign服務間的調用詳解

    這篇文章主要介紹了SpringCloud中的Feign服務間的調用詳解,Feign 是一個聲明式的 REST 客戶端,它能讓 REST 調用更加簡單,Feign 供了 HTTP 請求的模板,通過編寫簡單的接口和插入注解,就可以定義好 HTTP 請求的參數(shù)、格式、地址等信息,需要的朋友可以參考下
    2024-01-01
  • Java中的值傳遞和引用傳遞實例介紹

    Java中的值傳遞和引用傳遞實例介紹

    java 中沒有引用傳遞,都是值傳遞的,可以通過傳遞副本修改對象的,副本交換,并不影響原引用
    2013-09-09
  • 記一次集成swagger2(Knife4j)在線文檔提示:Knude4j文檔請求異常的解決辦法

    記一次集成swagger2(Knife4j)在線文檔提示:Knude4j文檔請求異常的解決辦法

    Knife4j是一個集Swagger2 和 OpenAPI3為一體的增強解決方案,下面這篇文章主要給大家介紹了關于一次集成swagger2(Knife4j)在線文檔提示:Knude4j文檔請求異常的解決辦法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Spring Security整合KeyCloak保護Rest API實現(xiàn)詳解

    Spring Security整合KeyCloak保護Rest API實現(xiàn)詳解

    這篇文章主要為大家介紹了Spring Security整合KeyCloak保護Rest API實現(xiàn)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Spring Boot中自動化配置的利弊以及解決方法

    Spring Boot中自動化配置的利弊以及解決方法

    這篇文章主要給大家介紹了關于Spring Boot中自動化配置的利弊以及解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • 聊聊Object類中的wait()和notify()方法

    聊聊Object類中的wait()和notify()方法

    這篇文章主要介紹了Object類中的wait()和notify()方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 將BigDecimal轉成字符串為科學計數(shù)法的踩坑記錄

    將BigDecimal轉成字符串為科學計數(shù)法的踩坑記錄

    這篇文章主要介紹了將BigDecimal轉成字符串為科學計數(shù)法的踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java網(wǎng)絡編程基礎詳解

    Java網(wǎng)絡編程基礎詳解

    網(wǎng)絡編程是指編寫運行在多個設備(計算機)的程序,這些設備都通過網(wǎng)絡連接起來。本文介紹了一些網(wǎng)絡編程基礎的概念,并用Java來實現(xiàn)TCP和UDP的Socket的編程,來讓讀者更好的了解其原理
    2021-08-08
  • JAVA多線程和并發(fā)基礎面試問答(翻譯)

    JAVA多線程和并發(fā)基礎面試問答(翻譯)

    多線程和并發(fā)問題是Java技術面試中面試官比較喜歡問的問題之一。在這里,從面試的角度列出了大部分重要的問題,但是你仍然應該牢固的掌握Java多線程基礎知識來對應日后碰到的問題
    2014-09-09
  • java通過isAccessAllowed方法實現(xiàn)訪問控制

    java通過isAccessAllowed方法實現(xiàn)訪問控制

    在Web應用開發(fā)中,使用Apache Shiro框架的isAccessAllowed方法可以有效管理用戶的訪問權限,本文詳細解析了該方法的實現(xiàn)過程,包括用戶身份驗證、權限判斷和安全性分析,下面就一起來了解一下
    2024-09-09

最新評論