SpringBoot 全局异常配置及返回自定义页面
2018-07-06 16:20
711 查看
1. 全局异常的配置
1. 创建异常处理类
package com.test.spring_boot_demo.domain; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.Map; @RestControllerAdvice public class CustomExtHandler { private static final Logger LOG = LoggerFactory.getLogger(CustomExtHandler.class); // 捕获全局异常,处理所有不可知的异常 @ExceptionHandler(value = Exception.class) // @ResponseBody Object handleException(Exception e, HttpServletRequest request) { LOG.error("url {}, msg {}", request.getRequestURL(), e.getMessage()); Map<String, Object> map = new HashMap<>(); map.put("code", "100"); map.put("msg", e.getMessage()); map.put("url", request.getRequestURL()); return map; } }
使用 @RestControllerAdvice 注解,可以不需要 @ResponseBody 注解
2. 创建controller接口
@GetMapping("/test/exception") public Object testException() { int n = 1/0; return "test exception"; }
3. 访问测试
浏览器访问地址http://localhost:8080/test/exception
返回结果
{"msg":"/ by zero","code":"100","url":"http://localhost:8080/test/exception"}
2. 触发异常返回自定义页面
1. 官网介绍
官方地址2. 添加模板引擎依赖
<!-- 模板引擎 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
3. 添加自定义异常类
package com.test.spring_boot_demo.domain; public class MyException extends RuntimeException { private String code; private String msg; public MyException(String code, String msg) { this.code = code; this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
4. 添加自定义异常监听器
@ExceptionHandler(value = MyException.class) Object handleMyException(MyException e) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("error.html"); modelAndView.addObject("msg", e.getMessage()); return modelAndView; }
5. 添加Http请求接口
@GetMapping("/test/myexception") public Object myexc() { throw new MyException("500", "my ext 异常"); }
6. 测试
测试:浏览器访问http://localhost:8080/test/myexception
结果:跳转到新的页面
出异常 template
相关文章推荐
- spring boot 全局统一格式返回自定义异常信息
- 3.Spring Boot + Security初步使用(覆盖配置的两种方式 配置类和XML注入以自定义页面为例)
- Spring Boot @ControllerAdvice 处理全局异常,返回固定格式Json
- ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面
- Spring Boot @ControllerAdvice 处理全局异常,返回固定格式Json
- SpringBoot学习——全局异常处理设置(返回JSON)
- Spring Boot实战之全局异常捕获 实现参数异常检查返回统一错误信息
- Springboot入门-配置异常页面
- spring boot配置shiro自定义shiro filter匹配异常
- SpringBoot学习之全局异常处理设置(返回JSON)
- 全局异常处理类的定义与错误页面实现(基于SpringBoot)
- 3-Spring Boot ( 全局捕获异常 与 自定义异常 )
- springboot 配置全局异常拦截
- Spring Boot 全局配置文件
- Springboot自定义异常处理
- SpringBoot之七:全局异常
- 2、spring-boot 工程配置——配置文件详解:自定义属性、随机数、多环境配置等
- springboot 返回json格式数据时间格式配置
- SpringBoot系列之三全局异常的捕获处理