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

springboot全局異常處理代碼實例

 更新時間:2020年01月06日 15:37:32   作者:天際星痕  
這篇文章主要介紹了springboot全局異常處理代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下

這篇文章主要介紹了springboot全局異常處理代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下

前言:

開發(fā)中異常的處理必不可少,常用的就是 throw 和 try catch,這樣一個項目到最后會出現(xiàn)很多冗余的代碼,使用全局異常處理避免過多冗余代碼。

全局異常處理:

1、pom 依賴(延續(xù)上一章代碼):

<dependencies>
  <!-- Spring Boot Web 依賴 -->
  <!-- Web 依賴 - 包含了 spring-boot-starter-validation 依賴-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <!-- Spring Boot Test 依賴 -->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
  <!-- spring-boot整合mybatis -->
  <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
  </dependency>
  <!-- mysql驅(qū)動 -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
  </dependency>
  <!-- alibaba的druid數(shù)據(jù)庫連接池 -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.0</version>
  </dependency>
  <!--lombok依賴-->
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
  </dependency>
  <!-- fastjson 依賴添加 -->
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.31</version>
  </dependency>
</dependencies> 

2、公共的結(jié)果類封裝:

這里簡單封裝,實際根據(jù)自己業(yè)務(wù)需求去封裝。

@Getter
@Setter
public class ApiResult {
  // 響應(yīng)業(yè)務(wù)狀態(tài)
  private Integer status;
  // 響應(yīng)消息
  private String msg;
  // 響應(yīng)中的數(shù)據(jù)
  private Object data;
  public static ApiResult build(Integer status, String msg, Object data) {
    return new ApiResult(status, msg, data);
  }
  public static ApiResult ok(Object data) {
    return new ApiResult(data);
  }
  public static ApiResult ok() {
    return new ApiResult(null);
  }
  public ApiResult() { }
  public static ApiResult build(Integer status, String msg) {
    return new ApiResult(status, msg, null);
  }
  public ApiResult(Integer status, String msg, Object data) {
    this.status = status;
    this.msg = msg;
    this.data = data;
  }
  public ApiResult(Object data) {
    this.status = 200;
    this.msg = "OK";
    this.data = data;
  }
}

3、添加全局異常處理類(在入口函數(shù)下的包中新建):

/**
 * 全局異常處理 Handler
 * @ControllerAdvice 配置控制器通知
 * annotations 屬性: 指定我們需要攔截的注解,一個或多個(多個加到大括號中,逗號分隔)
 */
// @RestControllerAdvice = @ResponseBody + @ControllerAdvice
@RestControllerAdvice(annotations = {RestController.class})
@Slf4j
public class GlobalExceptionHandler {
  /**
  * 默認統(tǒng)一異常處理方法
  * @ExceptionHandler 注解用來配置需要攔截的異常類型, 也可以是自定義異常
  */
  @ExceptionHandler(Exception.class)
  // 此處可以指定返回的狀態(tài)碼 和 返回 結(jié)果說明
  // @ResponseStatus(reason = "exception",value = HttpStatus.BAD_REQUEST)
  public Object runtimeExceptionHandler(Exception e) {
    // 打印異常信息到控制臺
    e.printStackTrace();
    log.error("請求出現(xiàn)異常,異常信息為: {}", e.getMessage());
    // 使用公共的結(jié)果類封裝返回結(jié)果, 這里我指定狀態(tài)碼為 400
    return ApiResult.build(400, e.getMessage());
  }
}  

4、異常測試類:

/**
 * 異常處理測試 controller
 */
@RestController
@Slf4j
public class ExceptionController {
   @RequestMapping(value = "/exception/{number}")
   public ApiResult exception(@PathVariable int number) {
    int res = 10 / number;
    log.info(">>>>>結(jié)果number為: {}", res);
    return ApiResult.ok();
  }
}  

5、測試:

5.1、請求接口:http://localhost:8080/exception/1 結(jié)果正常

5.2、請求接口:http://localhost:8080/exception/0 出現(xiàn)除以 0 錯誤,全局異常處理起作用,返回指定結(jié)果集。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Maven 打包項目到私服 (deploy)的配置方法

    Maven 打包項目到私服 (deploy)的配置方法

    這篇文章主要介紹了Maven 打包項目到私服 (deploy)的配置方法,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Spring Bean三級緩存機制的技術(shù)指南

    Spring Bean三級緩存機制的技術(shù)指南

    在 Spring 框架中,Bean 的創(chuàng)建和管理是容器的核心功能之一,了提高性能,Spring 采用了多級緩存機制來減少不必要的對象創(chuàng)建和配置,本文將詳細介紹 Spring 中 Bean 三級緩存的實現(xiàn)原理,并通過代碼示例幫助你理解這個機制的工作方式,需要的朋友可以參考下
    2025-04-04
  • 使用jd-gui反編譯修改jar包里的.class并重新生成新jar問題

    使用jd-gui反編譯修改jar包里的.class并重新生成新jar問題

    這篇文章主要介紹了使用jd-gui反編譯修改jar包里的.class并重新生成新jar問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • java圖論弗洛伊德和迪杰斯特拉算法解決最短路徑問題

    java圖論弗洛伊德和迪杰斯特拉算法解決最短路徑問題

    這篇文章主要為大家介紹了java圖論弗洛伊德算法和迪杰斯特拉算法解決最短路徑的問題示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • Java實現(xiàn)AES加密和解密方式完整示例

    Java實現(xiàn)AES加密和解密方式完整示例

    這篇文章主要給大家介紹了關(guān)于Java實現(xiàn)AES加密和解密方式的相關(guān)資料,AES加密為最常見的對稱加密算法,是一種區(qū)塊加密標準,這個標準用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用,需要的朋友可以參考下
    2023-10-10
  • Java lambda表達式實現(xiàn)Flink WordCount過程解析

    Java lambda表達式實現(xiàn)Flink WordCount過程解析

    這篇文章主要介紹了Java lambda表達式實現(xiàn)Flink WordCount過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2020-02-02
  • Java讀寫文件方法總結(jié)(推薦)

    Java讀寫文件方法總結(jié)(推薦)

    下面小編就為大家?guī)硪黄狫ava讀寫文件方法總結(jié)(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • SpringBoot2基于重復(fù)創(chuàng)建bean的問題及解決

    SpringBoot2基于重復(fù)創(chuàng)建bean的問題及解決

    這篇文章主要介紹了SpringBoot2基于重復(fù)創(chuàng)建bean的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Spring事務(wù)Transaction配置的五種注入方式詳解

    Spring事務(wù)Transaction配置的五種注入方式詳解

    這篇文章主要介紹了Spring事務(wù)Transaction配置的五種注入方式詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • Java數(shù)據(jù)結(jié)構(gòu)之Map與Set專篇講解

    Java數(shù)據(jù)結(jié)構(gòu)之Map與Set專篇講解

    這篇文章通過實例面試題目來講解Java中Map和Set之間的關(guān)系,具有很好的參考價值,Map與Set在面試中經(jīng)常會遇到。一起跟隨小編過來看看吧
    2022-01-01

最新評論

全南县| 温宿县| 多伦县| 福建省| 册亨县| 平武县| 安塞县| 乐至县| 寿宁县| 阿巴嘎旗| 罗平县| 鲁山县| 清远市| 镇江市| 和平区| 临西县| 桂平市| 平昌县| 永定县| 和静县| 武陟县| 阜南县| 湖州市| 织金县| 平安县| 沿河| 静海县| 弥渡县| 司法| 台中县| 长寿区| 高青县| 西充县| 陵水| 揭阳市| 格尔木市| 林口县| 禹城市| 玛沁县| 翁牛特旗| 五河县|