品牌管理-统一异常处理
生活随笔
收集整理的這篇文章主要介紹了
品牌管理-统一异常处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
統一的異常處理
@ControllerAdvice1)、編寫異常處理類,使用@ControllerAdvice。2)、使用@ExceptionHandler標注方法可以處理的異常。
package com.leon.gulimall.product.exception;import com.leon.common.exception.BizCodeEnume;
import com.leon.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.ModelAndView;import java.util.HashMap;
import java.util.Map;/*** 集中處理所有異常*/
@Slf4j
//@ResponseBody
//@ControllerAdvice(basePackages = "com.leon.gulimall.product.controller")
@RestControllerAdvice(basePackages = "com.leon.gulimall.product.controller")
public class ExceptionControllerAdvice {@ExceptionHandler(value= MethodArgumentNotValidException.class)public R handleVaildException(MethodArgumentNotValidException e){log.error("數據校驗出現問題{},異常類型:{}",e.getMessage(),e.getClass());BindingResult bindingResult = e.getBindingResult();Map<String,String> errorMap = new HashMap<>();bindingResult.getFieldErrors().forEach((fieldError)->{errorMap.put(fieldError.getField(),fieldError.getDefaultMessage());});return R.error(BizCodeEnume.VAILD_EXCEPTION.getCode(),BizCodeEnume.VAILD_EXCEPTION.getMsg()).put("data",errorMap);}@ExceptionHandler(value = Throwable.class)public R handleException(Throwable throwable){log.error("錯誤:",throwable);return R.error(BizCodeEnume.UNKNOW_EXCEPTION.getCode(),BizCodeEnume.UNKNOW_EXCEPTION.getMsg());}}
package com.leon.common.exception;/**** 錯誤碼和錯誤信息定義類* 1. 錯誤碼定義規則為5為數字* 2. 前兩位表示業務場景,最后三位表示錯誤碼。例如:100001。10:通用 001:系統未知異常* 3. 維護錯誤碼后需要維護錯誤描述,將他們定義為枚舉形式* 錯誤碼列表:* 10: 通用* 001:參數格式校驗* 11: 商品* 12: 訂單* 13: 購物車* 14: 物流***/
public enum BizCodeEnume {UNKNOW_EXCEPTION(10000,"系統未知異常"),VAILD_EXCEPTION(10001,"參數格式校驗失敗");private int code;private String msg;BizCodeEnume(int code,String msg){this.code = code;this.msg = msg;}public int getCode() {return code;}public String getMsg() {return msg;}
}
?
總結
以上是生活随笔為你收集整理的品牌管理-统一异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 品牌管理-JSR303数据校验
- 下一篇: JSR303自定义校验注解