九、SpringBoot异常之基于SpringMVC提供的注解
2017-04-16 23:32
435 查看
创建全局异常处理类:通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。@ExceptionHandler用来定义函数针对的异常类型,最后将Exception对象和请求URL映射到error.html中
启动该应用,访问:http://localhost:8080/index,可以看到如下错误提示页面。
通过实现上述内容之后,我们只需要在Controller中抛出Exception,当然我们可能会有多种不同的Exception。然后在@ControllerAdvice类中,根据抛出的具体Exception类型匹配@ExceptionHandler中配置的异常类型来匹配错误映射和处理
本质上,只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数return的内容转换为JSON格式。
创建全局异常处理类
@ControllerAdvice class GlobalExceptionHandler { public static final String DEFAULT_ERROR_VIEW = "error"; @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception { ModelAndView mav = new ModelAndView(); mav.addObject("exception", e); mav.addObject("url", req.getRequestURL()); mav.setViewName(DEFAULT_ERROR_VIEW); return mav; } }
实现error.html
在templates目录下创建error.html,将请求的URL和Exception对象的message输出。<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8" /> <title>统一异常处理</title> </head> <body> <h1>Error Handler</h1> <div th:text="${url}"></div> <div th:text="${exception.message}"></div> </body> </html>
发生异常的controller
@RestController public class IndexController { private AtomicInteger atomicInteger = new AtomicInteger(); @GetMapping("/index") public String helloWord() { throw new IllegalArgumentException("error paramaters"); } }
启动该应用,访问:http://localhost:8080/index,可以看到如下错误提示页面。
通过实现上述内容之后,我们只需要在Controller中抛出Exception,当然我们可能会有多种不同的Exception。然后在@ControllerAdvice类中,根据抛出的具体Exception类型匹配@ExceptionHandler中配置的异常类型来匹配错误映射和处理
返回JSON格式
通过@ControllerAdvice统一定义不同Exception映射到不同错误处理页面。而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这时候我们也能轻松支持。本质上,只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数return的内容转换为JSON格式。
相关文章推荐
- springBoot注解大全JPA注解springMVC相关注解全局异常处理
- SpringMVC经典系列-04基于Spring3.1注解的方式进行项目开发---【LinusZhu】
- SpringMVC + ehcache( ehcache-spring-annotations)基于注解的服务器端数据缓存
- 基于Spring Boot的全注解版Hessian服务
- 基于SpringBoot + Mybatis实现SpringMVC Web项目【原创】
- 基于注解的spring3+hibernate3的springMVC框架
- 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)
- springboot与dubbo整合(基于注解)
- Spring基于注解及SpringMVC
- 【Spring】SpringMVC之基于注解的实现SpringMVC+MySQL
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
- 基于注解Spring MVC综合Hibernate(需要jar包,spring和Hibernate整合配置,springMVC组态,重定向,)批量删除
- 基于SpringBoot + Mybatis实现SpringMVC Web项目【原创】
- 基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)
- SpringMVC + ehcache( ehcache-spring-annotations)基于注解的服务器端数据缓存
- 基于SpringBoot + Mybatis实现SpringMVC Web项目【原创】
- Spring学习笔记-springMVC基于注解的控制器(Demo)
- 基于SpringBoot + Mybatis实现SpringMVC Web项目【原创】
- 基于SpringBoot + Mybatis实现SpringMVC Web项目