SpringBoot 异常处理

Posted 陈标

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot 异常处理相关的知识,希望对你有一定的参考价值。

SpringBoot 异常处理

一、自定义错误页面

  创建 error.html 页面,当发生错误时,将自动跳转到该页面。内部实现类为:BasicErrorController

  适用范围:所有的异常都指向 error.html 页面,不能根据对应的异常跳转到对应的页面。

 

二、@ExceptionHandler

  在对应的Controller内,添加对应的错误处理方法,然后跳转到指定的错误页面。

  适用范围:每个Controller内都有对应的错误方法,代码冗余性高。

 

三、@ControllerAdvice 全局异常处理器注解

  搭配@ExceptionHandler 使用,可以解决方式二的代码冗余问题。

  

四、SimpleMappingExceptionResolver   

技术分享图片
@Configuration   //当配置类使用
public class GlobalException {

    @Bean      //返回异常处理bean
    public SimpleMappingExceptionResolver getGlobalException() {
        SimpleMappingExceptionResolver smer = new SimpleMappingExceptionResolver();
        Properties mappings = new Properties();
        mappings.put("异常类型", "视图名称");
        smer.setExceptionMappings(mappings);
        return smer;
    }
    
}
View Code

 

  适用范围:区别于方式三,方式四无法传递异常对象。

五、HandlerExceptionResolver

  实现 HandlerExceptionResolver,重写 resolveException 方法

技术分享图片
@Configuration
public class GlobalException extends HandlerExceptionResolverComposite{

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
            Exception ex) {
        ModelAndView mv = new ModelAndView();
        //添加异常分支处理
        if(ex instanceof NullPointerException) {
            mv.setViewName("视图名称");
        }
        if(ex instanceof ArithmeticException) {
            mv.setViewName("视图名称");
        }
        mv.addObject("error", ex.toString()); //传递异常对象
        return mv;
    }
    
}
View Code

 

  适用范围:与方式三类似。

 

以上是关于SpringBoot 异常处理的主要内容,如果未能解决你的问题,请参考以下文章

springboot2.0处理任何异常返回通用数据格式

SpringBoot启动报错“Consider defining a bean of type ‘xxx.mapper.UserMapper‘ in your configuration.“(代码片段

Springboot集成Common模块中的的全局异常处理遇见的问题

SpringBoot学习13:springboot异常处理方式3(使用@ControllerAdvice+@ExceptionHandle注解)

SpringBoot项目如何做到统一异常处理

聊聊springboot项目全局异常处理那些事儿