SpringBoot进阶之统一异常处理(含源码)
2017-09-05 16:48
801 查看
浅谈异常处理
在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 所以我们会进行统一异常处理,进而去避免这些问题。
默认异常处理
Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。
启动该应用,访问一个不存在的URL。
统一异常处理,场景1 返回HTML页面
编写全局异常处理类 GlobalExceptionHandler.java
编写异常类 ExceptionController.java
编写error.html页面
启动应用,访问:http://localhost:8080/nException
统一异常处理,场景2 返回JSON页面
编写ErrorInfo.java实体类
在全局异常处理类 GlobalExceptionHandler.java编写jsonErrorHandler方法
在ExceptionController.java新增jsonException方法
启动应用,访问:http://localhost:8080/jsonException
源码下载
SpringBoot进阶之统一异常处理(含源码)
版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明出处:http://blog.csdn.net/wenteryan
在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。 所以我们会进行统一异常处理,进而去避免这些问题。
默认异常处理
Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。
启动该应用,访问一个不存在的URL。
统一异常处理,场景1 返回HTML页面
编写全局异常处理类 GlobalExceptionHandler.java
// 通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Controller中逐个定义。 @ControllerAdvice public class GlobalExceptionHandler { public static final String DEFAULT_ERROR_VIEW = "error"; // @ExceptionHandler用来定义函数针对的异常类型,最后将Exception对象和请求URL映射到error.html中 @ExceptionHandler(value = Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest request, Exception e) throws Exception { ModelAndView mav = new ModelAndView() ; mav.addObject("errorname", "统一异常处理页面") ; mav.addObject("exception", e) ; mav.addObject("url", request.getRequestURL()) ; mav.setViewName(DEFAULT_ERROR_VIEW) ; return mav ; } }
编写异常类 ExceptionController.java
@Controller public class ExceptionController { @RequestMapping("/nException") public String nException() throws Exception { throw new Exception("这里有个错误异常") ; } }
编写error.html页面
<div class="container"> <br></br> <div class="alert alert-warning alert-dismissible" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button> <h2 th:text="${errorname }"></h2> <p th:text="${exception.message }"></p> <p th:text="${url }"></p> </div> </div>
启动应用,访问:http://localhost:8080/nException
统一异常处理,场景2 返回JSON页面
编写ErrorInfo.java实体类
package com.javazhan.domain; public class ErrorInfo<T> { public static final Integer OK = 0000 ; public static final Integer ERROR = 9999 ; private Integer code ; private String message ; private String url ; private T data ; public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public T getData() { return data; } public void setData(T data) { this.data = data; } }
在全局异常处理类 GlobalExceptionHandler.java编写jsonErrorHandler方法
@ExceptionHandler(value = MyException.class) @ResponseBody public ErrorInfo<String> jsonErrorHandler(HttpServletRequest request, MyException e) throws Exception { ErrorInfo<String> r = new ErrorInfo<>() ; r.setMessage(e.getMessage()) ; r.setCode(ErrorInfo.ERROR) ; r.setData("Some Data") ; r.setUrl(request.getRequestURL().toString()) ; return r ; }
在ExceptionController.java新增jsonException方法
@RequestMapping("/jsonException") public String jsonException() throws MyException { throw new MyException("这里有个错误异常"); }
启动应用,访问:http://localhost:8080/jsonException
源码下载
SpringBoot进阶之统一异常处理(含源码)
版权声明:本文为博主原创文章,未经博主允许不得转载。转载请注明出处:http://blog.csdn.net/wenteryan
相关文章推荐
- spring boot / cloud (十二) 异常统一处理进阶
- 【SpringBoot】web进阶——表单验证,AOP统一处理请求日志,统一异常处理,单元测试
- springboot-web进阶(三)——统一异常处理
- SpringBoot进阶之使用异常替代返回错误码(拦截异常并统一处理)
- 【SpringBoot】Spring Boot进阶之Web进阶( 第2章 Web进阶- 统一异常处理 )
- Spring Boot学习进阶笔记(五)-异常统一处理
- spring boot / cloud (十二) 异常统一处理进阶
- Spring Boot中Web应用的统一异常处理
- springboot + shiro 权限注解、统一异常处理、请求乱码解决
- 企业分布式微服务云SpringCloud SpringBoot mybatis (五)Spring Boot中Web应用的统一异常处理
- Springboot-系统异常统一处理(接口编程异常处理)
- Spring Boot 与 Kotlin Web应用的统一异常处理
- Spring Boot中Web应用的统一异常处理
- SpringBoot初始教程之统一异常处理(三)
- spring boot的统一异常处理
- Spring-Boot 统一异常处理
- STS创建Spring Boot项目实战(Rest接口、数据库、用户认证、分布式Token JWT、Redis操作、日志和统一异常处理)
- Spring Boot中Web应用的统一异常处理
- spring-boot统一处理返回给前台的数据格式(避免返回异常堆栈信息,干扰用户体验)
- SpringBoot初始教程之统一异常处理(三)