品牌管理-统一异常处理
生活随笔
收集整理的這篇文章主要介紹了
品牌管理-统一异常处理
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
統(tǒng)一的異常處理
@ControllerAdvice1)、編寫(xiě)異常處理類,使用@ControllerAdvice。2)、使用@ExceptionHandler標(biāo)注方法可以處理的異常。
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("數(shù)據(jù)校驗(yàn)出現(xiàn)問(wèn)題{},異常類型:{}",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("錯(cuò)誤:",throwable);return R.error(BizCodeEnume.UNKNOW_EXCEPTION.getCode(),BizCodeEnume.UNKNOW_EXCEPTION.getMsg());}}
package com.leon.common.exception;/**** 錯(cuò)誤碼和錯(cuò)誤信息定義類* 1. 錯(cuò)誤碼定義規(guī)則為5為數(shù)字* 2. 前兩位表示業(yè)務(wù)場(chǎng)景,最后三位表示錯(cuò)誤碼。例如:100001。10:通用 001:系統(tǒng)未知異常* 3. 維護(hù)錯(cuò)誤碼后需要維護(hù)錯(cuò)誤描述,將他們定義為枚舉形式* 錯(cuò)誤碼列表:* 10: 通用* 001:參數(shù)格式校驗(yàn)* 11: 商品* 12: 訂單* 13: 購(gòu)物車(chē)* 14: 物流***/
public enum BizCodeEnume {UNKNOW_EXCEPTION(10000,"系統(tǒng)未知異常"),VAILD_EXCEPTION(10001,"參數(shù)格式校驗(yàn)失敗");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;}
}
?
總結(jié)
以上是生活随笔為你收集整理的品牌管理-统一异常处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 品牌管理-JSR303数据校验
- 下一篇: JSR303自定义校验注解