使用 ControllerAdvice
方案:
- Application 需要先声明 enableMvc:
@SpringBootApplication
@EnableWebMvc
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
- 编写一个异常处理器:
@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
- 第二步是添加了全局的错误处理,而 Controller 内同样可以设置,优化级比全局的高,直接在 Controller 里添加个
@ExceptionHandler
方法:
@ExceptionHandler(Exception.class)
public ResultBean error() {
return new ResultBean(500, "error");
}
这个方案无法处理404的错误