SpringBoot 注解统一处理异常

xiaoxiao2021-02-28  38

1. 为什么要用全局异常处理? 代码层面的异常处理,指的是Java运行时异常处理(RuntimeException); 可以使用Java或第三方框架提供的异常处理类抛出或捕获异常, 或者通过自定义异常,但是会导致代码耦合度高、工作量大、维护困难。2. 全局异常处理解决思路 将系统中的各个部分的异常都通过throws Exception的方式向上抛出异常, 最后交给一个统一的异常代理处理类做相应的处理。3. 实现统一处理异常类 使用到的注解: @ControllerAdvice @ResponseBody @ExceptionHandler @InitBinder @ModelAttribute

代码示例:

                @ControllerAdvice @ResponseBody public class ExceptionConfig { private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionConfig.class); /** * 自定义异常类 * @param e * @return */ @ExceptionHandler(value = IotException.class) public ResponseVO handlerIotException(IotException e) { ResponseVO response = ResponseVO.buildFail(e.getErrorCode()); LOGGER.error(e.getLog()); return response; } /** * 自定义异常类 * @param e * @return */ @ExceptionHandler(value = Exception.class) public ResponseVO handlerException(Exception e) { ResponseVO response = ResponseVO.buildFail(ResponseCode.ERROR_SYS); e.printStackTrace(); LOGGER.error("System error!", e); return response; } //....可以定义多个自定义异常类 }4. 代码中如何使用全局异常处理类 示例: if (StringUtil.isEmpty(businessType.getName())) { throw new IotException(ResponseCode.ERROR_INVALID_PARAMS, "The businessTypeName can not be empty : " + businessType); }   抛出的异常就会被捕获啦~
转载请注明原文地址: https://www.6miu.com/read-2622354.html

最新回复(0)