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 Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 项目难免会出现系统抛出异常或者404 。 直接把错误信息反馈给用户不太好。所以要统一处理异常并返回直观的提示。【以...
    else05阅读 2,125评论 2 1
  • 前言 先谈谈“异常处理”这件事。下面有 2 份伪代码,对比下: 可以看出,如果使用异常替代返回错误码,错误处理代码...
    Anoyi阅读 2,270评论 1 26
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,613评论 1 92
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,992评论 6 342