SpringBoot 全局异常处理
SpringBoot 全局异常处理
SpringBoot 框架对全局异常 捕获提供了支持
只需要创建一个类和一个方法,并添加两个注解: @ControllerAdvice 和@ExceptionHandler 即可
ErrorResponseData 类为自定义类,自行编写
- @ControllerAdvice:该注解是 spring2.3 以后新增的一个注解,主要是用来为 Controller 的一些公共需 求的低侵入性增强提供辅助,作用于@RequestMapping 标注的方法上。
- @ExceptionHandler:该注解是配合@ControllerAdvice 一起使用的注解,可以自定义错误处理器,自 行组装 json 字符串,并返回到页面。
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ErrorResponseData<?> runTimeError(Throwable e) {
log.error("服务器运行异常", e);
return new ErrorResponseData<>("500",e.getMessage());
}
@ExceptionHandler(IOException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ErrorResponseData<?> ioError(Throwable e) {
log.error("io运行异常", e);
return new ErrorResponseData<>("500",e.getMessage());
}
@ExceptionHandler(IOException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ErrorResponseData<?> sqlError(Throwable e) {
log.error("sql运行异常", e);
return new ErrorResponseData<>("500",e.getMessage());
}
}