目录
一、效果
想实现的场景是, 指定的异常直接抛到前端, 捕获的异常后log.error(), 前端模糊返回"操作异常"
二、实现
1、自定义一个异常MyException
public class MyException extends RuntimeException { private static final long serialVersionUID = -1004916162498956491L; public MyException(String msg) { super(msg); } }
2、实现类调用
@Override public int add(Demo demo) { if (null == demo.getName()) { throw new MyException("名称为空!"); } return demoMapper.add(demo); }
3、Controller
@PostMapping(value = "/add") public String add(@RequestBody Demo demo) { try { demoService.add(demo); } catch (MyException e) { return Resule.fail(e.getMsg()); } catch (Exception e) log.error("异常:{}",e) return Resule.fail(); } return Resule.success(); }
4、统一异常捕获
package com.xx.xx.manage.exception; /** * @author libusi */ @Slf4j @RestControllerAdvice public class ApplicationExceptionHandler { protected static final Logger logger = LoggerFactory.getLogger(ApplicationExceptionHandler.class); @Autowired public ApplicationExceptionHandler(LogSaveUtil logSaveUtil) { this.logSaveUtil = logSaveUtil; } /** * 异常详细信息 * * @return BaseResponse */ @ExceptionHandler(MyException.class) public String msgException(Throwable t) { ... return Resule.fail(); } }
5、注意事项
自定义异常捕获不到, 那是因为controller没有catch MyException, 或者全局捕获异常的问题
一般情况下, 不要把未知异常的错误信息抛到前端, 要模糊处理返回
有用请点赞,养成良好习惯!
疑问、交流、鼓励请留言!
springboot异常处理的一点总结
猜你喜欢
转载自blog.csdn.net/libusi001/article/details/127355768
今日推荐
周排行