大佬教程收集整理的这篇文章主要介绍了谷粒商城学习——P68统一异常处理,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
去掉@Valid后的BindingResult
@requestMapping("/save") // @requiresPermissions("product:brand:save") public R save(@Valid @requestBody BrandEntity brand){ brandservice.save(brand); return R.ok(); }
异常处理类处理BindingResult及返回结果
package com.atguigu.gulimall.product.exception; import com.atguigu wangt.cc mon.exception.bizCodeEnume; import com.atguigu wangt.cc mon.utils.R; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.bindingResult; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.Annotation.ExceptionHandler; import org.springframework.web.bind.Annotation.RestControllerAdvice; import java.util.HashMap; import java.util.Map; /** * @Description: * @Author: zyn * @Date: 2021-6-30 */ /** * 集中处理所有异常 */ @Slf4j @RestControllerAdvice public class GulimallExceptionControllerAdvice { @ExceptionHandler(value = MethodArgumentNotValidException.class)//指定处理的异常类型 public R handleValidException(MethodArgumentNotValidException E){ log.error("数据校验出现问题{},异常类型{}",e.getmessage(),e.getClass()); BindingResult result=e.getBindingResult(); Map<String,String> map = new HashMap<>(); result.getFieldErrors().forEach(x->{ map.put(x.getField(),x.getDefaultmessage()); }); return R.error(BizCodeEnume.VAILD_EXCEPTION.getCode(),BizCodeEnume.VAILD_EXCEPTION.getmsg()).put("data",map); } @ExceptionHandler(value = Throwable.class)//其他公共异常,优先级小于指定异常 public R handleException(Throwable E){ return R.error(BizCodeEnume.VAILD_EXCEPTION.getCode(),BizCodeEnume.VAILD_EXCEPTION.getmsg()); } }
全局错误码定义规范开发
package com.atguigu wangt.cc mon.exception; /** * @Description: * @Author: zyn * @Date: 2021-6-30 */ /*** * 错误码和错误信息定义类 * 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; } }
测试效果:
代码里有写了注释,貌似没什么要说的了
以上是大佬教程为你收集整理的谷粒商城学习——P68统一异常处理全部内容,希望文章能够帮你解决谷粒商城学习——P68统一异常处理所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。