SpringBoot 全局异常处理

SpringBoot 全局异常处理

SpringBoot 框架对全局异常 捕获提供了支持

只需要创建一个类和一个方法,并添加两个注解: @ControllerAdvice 和@ExceptionHandler 即可

ErrorResponseData 类为自定义类,自行编写

image

  • @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());
    }
}

java 异常体系继承图:

image

posted @ 2024-08-26 17:18  进击的乌拉  阅读(164)  评论(0)    收藏  举报