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; } }
适用范围:区别于方式三,方式四无法传递异常对象。
五、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; } }
适用范围:与方式三类似。
以上是关于SpringBoot 异常处理的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot启动报错“Consider defining a bean of type ‘xxx.mapper.UserMapper‘ in your configuration.“(代码片段
Springboot集成Common模块中的的全局异常处理遇见的问题
SpringBoot学习13:springboot异常处理方式3(使用@ControllerAdvice+@ExceptionHandle注解)