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

溫馨提示×

溫馨提示×

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

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

如何在SpringBoot中統一處理邏輯異常

發布時間:2021-05-18 18:16:12 來源:億速云 閱讀:417 作者:Leah 欄目:編程語言

本篇文章為大家展示了如何在SpringBoot中統一處理邏輯異常,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

構建項目

我們將邏輯異常核心處理部分提取出來作為單獨的jar供其他模塊引用,創建項目在parent項目pom.xml添加公共使用的依賴,配置內容如下所示:

<dependencies>
    <!--Lombok-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
    </dependency>
    <!--測試模塊依賴-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <!--web依賴-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

項目創建完成后除了.idea、iml、pom.xml保留,其他的都刪除。

異常處理核心子模塊

/**
 * @author WGR
 * @create 2019/9/7 -- 15:06
 */
public class OssException extends RuntimeException implements Serializable {
  private static final long serialVersionUID = 1L;
  private Object[] errFormatArr;
  public OssException(String message,Object... obj) {
    super(message);
    this.errFormatArr = obj;
  }
  //由于實際需要,因此又追加以下兩種構造方法
  public OssException(String message, Throwable cause) {
    super(message, cause);
  }
  public OssException(Throwable cause) {
    super(cause);
  }
  public Object[] getErrFormatArr() {
    return errFormatArr;
  }
  public void setErrFormatArr(Object[] errFormatArr) {
    this.errFormatArr = errFormatArr;
  }
}

統一返回結果定義

@Slf4j
@ControllerAdvice
public class OssExceptionHandler {

  @ExceptionHandler(value = Exception.class)
  @ResponseBody
  public ModelAndView handle(Exception ex) {
    //使用FastJson提供的FastJsonJsonView視圖返回,不需要捕獲異常
    FastJsonJsonView view = new FastJsonJsonView();

    R result = null;
    if (ex instanceof OssException) {//自義異常
      result = M.getErrR(ex.getMessage(),((OssException) ex).getErrFormatArr());
    }else if(ex instanceof MaxUploadSizeExceededException) {//Spring的文件上傳大小異常
      result = M.getErrR("exception.maxUploadSizeExceededException",PropUtil.getInteger("upload.maxSize"));
    }else if(ex instanceof DataAccessException) {//Spring的JDBC異常
      result = M.getErrR("exception.dataAccessException");
    }else {//其他未知異常
      result = M.keyErrR("exception.other");
    }

    //開發過程中打印一下異常信息,生產過程可關閉
    if(result.getErrCode() != 60113) { //20181225 登陸會話失效,不打印了
      String stackTrace = StackUtil.getStackTrace(ex);
      log.error("----->"+stackTrace);
    }


    //電腦端,封裝異常信息 20181128 安全測試問題要求關閉詳細異常信息
    //if(WebUtil.isComputer()) result.setErrdetail(stackTrace);
    result.setErrdetail(ex.getMessage()); //20190128 異常信息簡易的還需加入
    view.setAttributesMap(result);

    return new ModelAndView(view);
  }
}

springboot是什么

springboot一種全新的編程規范,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程,SpringBoot也是一個服務于框架的框架,服務范圍是簡化配置文件。

上述內容就是如何在SpringBoot中統一處理邏輯異常,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

丹棱县| 周至县| 湘乡市| 黄平县| 明水县| 政和县| 金寨县| 玉环县| 福建省| 隆化县| 杭锦旗| 迁西县| 孟州市| 延吉市| 牡丹江市| 收藏| 安福县| 克拉玛依市| 阿鲁科尔沁旗| 图们市| 南郑县| 上虞市| 临沧市| 图木舒克市| 漳平市| 依安县| 锡林郭勒盟| 建瓯市| 绍兴市| 乌拉特后旗| 合肥市| 五莲县| 当涂县| 阳泉市| 西和县| 蕉岭县| 邵阳县| 涿鹿县| 商城县| 赤城县| 晴隆县|