Spring Boot 异常处理

使用 ControllerAdvice 方案:

  1. Application 需要先声明 enableMvc:
@SpringBootApplication
@EnableWebMvc
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
  1. 编写一个异常处理器:
@RestControllerAdvice
@ResponseBody
public class ErrorHandler {
    @ExceptionHandler(value = {NoHandlerFoundException.class})
    public ResultBean exception() {
        return new ResultBean(404, "Page not founded");
    }
}

NoHandlerFoundException.class 这个类生效需要先在 application.properties 里做一个设置:spring.mvc.throw-exception-if-no-handler-found=true,表示404错误的时候,抛出异常,而资源错误则需要添加spring.resources.add-mappings=false告诉 SpringBoot 不要为我们工程中的资源文件建立映射

RestControllerAdvice 里可以填上要处理的 Controller

  1. 第二步是添加了全局的错误处理,而 Controller 内同样可以设置,优化级比全局的高,直接在 Controller 里添加个 @ExceptionHandler 方法:
@ExceptionHandler(Exception.class)
    public ResultBean error() {
        return new ResultBean(500, "error");
    }

这个方案无法处理404的错误

你可能感兴趣的:(Spring Boot 异常处理)