您觉得本文档还缺少什么内容?可以自己补充~
- 定义常用的全局异常处理器
public abstract class AbstractGlobalExceptionHandler {
@ExceptionHandler(BizException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public R<?> bizException(BizException ex) {
log.warn("BizException:", ex);
return R.result(ex.getCode(), null, ex.getMessage(), ex.getLocalizedMessage()).setPath(getPath());
}
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(ArgumentException.class)
public R bizException(ArgumentException ex) {
log.warn("ArgumentException:", ex);
return R.result(ex.getCode(), null, ex.getMessage(), ex.getLocalizedMessage()).setPath(getPath());
}
}
- 在需要的服务 继承AbstractGlobalExceptionHandler
@Configuration
@ConditionalOnClass({Servlet.class, DispatcherServlet.class})
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
@RestControllerAdvice(annotations = {RestController.class, Controller.class})
@Slf4j
public class ExceptionConfiguration extends AbstractGlobalExceptionHandler {
}
- 在业务代码中,无需自行try catch 异常, 遇到异常统统抛出来,交给框架全局捕获。 1方面可以解决满屏的try catch导致的代码臃肿, 2方面是防止try了异常后,导致spring事务不生效