91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot全局異常處理代碼實例

發布時間:2020-09-23 15:08:40 來源:腳本之家 閱讀:188 作者:天際星痕 欄目:編程語言

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

前言:

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

全局異常處理:

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

<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驅動 -->
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
  </dependency>
  <!-- alibaba的druid數據庫連接池 -->
  <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、公共的結果類封裝:

這里簡單封裝,實際根據自己業務需求去封裝。

@Getter
@Setter
public class ApiResult {
  // 響應業務狀態
  private Integer status;
  // 響應消息
  private String msg;
  // 響應中的數據
  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、添加全局異常處理類(在入口函數下的包中新建):

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

5、測試:

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

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高雄市| 弋阳县| 德兴市| 普格县| 仙游县| 澄迈县| 吉木乃县| 隆林| 达日县| 乐业县| 山西省| 文化| 江达县| 仁化县| 山东| 蕉岭县| 杭锦旗| 云梦县| 东兰县| 买车| 安泽县| 龙州县| 安宁市| 林州市| 徐汇区| 长沙市| 荆门市| 临夏市| 元谋县| 社会| 桐庐县| 新安县| 澄城县| 鄄城县| 安吉县| 湖北省| 浮梁县| 和龙市| 前郭尔| 海淀区| 鄱阳县|