Spring Boot 中全局异常处理器
Spring Boot 中全局异常处理器,就是把错误异常统一处理的方法。等价于Springmvc中的异常处理器。
步骤一:基于前面的springBoot入门小demo修改
步骤二:修改HelloController类
修改HelloController,使得访问/hello一定会产生异常: some exception
- package cn.xdf.springboot.web;
- import java.text.DateFormat;
- import java.util.Date;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- @Controller
- public class HelloController {
- @RequestMapping("/hello")
- public String hello(Model m) throws Exception{
- m.addAttribute("now",DateFormat.getDateTimeInstance().format(new Date()));
- if (true) { //制造必然异常
- throw new Exception("some exception 异常内容!");
- }
- return "hello"; //视图重定向hello.jsp
- }
- }
步骤三:创建全局异常处理器类GlobalExceptionHandler
新增加一个类GlobalExceptionHandler,用于捕捉Exception异常以及其子类。
捕捉到之后,把异常信息,发出异常的地址放进ModelAndView里,然后跳转到 errorPage.jsp
- package cn.xdf.springboot.exception;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.web.bind.annotation.ControllerAdvice;
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import org.springframework.web.servlet.ModelAndView;
- @ControllerAdvice //@ControllerAdvice 该注解定义全局异常处理类
- public class GlobalExceptionHandler {
- @ExceptionHandler(value = Exception.class) //@ExceptionHandler 该注解声明异常处理方法
- public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
- ModelAndView mav = new ModelAndView();
- mav.addObject("exception", e); //异常内容(页面展示)
- mav.addObject("url", req.getRequestURL()); //请求的url地址(页面展示)
- mav.setViewName("errorPage"); //设置视图名称
- return mav;
- }
- }
步骤四:创建errorPage.jsp
errorPage.jsp 格式化一下,稍微好看点显示这些异常信息
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>系统故障</title>
- </head>
- <body>
- <div style="width:500px;border:1px solid lightgray;margin:200px auto;padding:80px">
- 系统出现了异常,异常原因是:
- ${exception}
- <br><br>
- 出现异常的地址是:
- ${url}
- </div>
- </body>
- </html>
步骤五:测试
因为配置了热部署,就不用重启了,刷新页面即可,效果图如下:
Spring Boot 中全局异常处理器的更多相关文章
- Spring boot之全局异常捕捉
在一个项目中的异常我们我们都会统一进行处理的,那么如何进行统一进行处理呢? 新建一个类GlobalDefaultExceptionHandler, 在class注解上@ControllerAdvice ...
- Spring Boot配置全局异常捕获
1 SpringBoot配置全局的异常捕获 项目的说明 配置thymeleaf作为视图模板 ExceptionController.java模拟测试用 MyAjaxExceptionHandler.j ...
- Spring Boot2 系列教程(十三)Spring Boot 中的全局异常处理
在 Spring Boot 项目中 ,异常统一处理,可以使用 Spring 中 @ControllerAdvice 来统一处理,也可以自己来定义异常处理方案.Spring Boot 中,对异常的处理有 ...
- Spring Boot 中关于自定义异常处理的套路!
在 Spring Boot 项目中 ,异常统一处理,可以使用 Spring 中 @ControllerAdvice 来统一处理,也可以自己来定义异常处理方案.Spring Boot 中,对异常的处理有 ...
- spring设置全局异常处理器
1.spring设置全局异常,它的原理是向上捕获 spring.xml配置 <!--自定义全局异常处理器--> <bean id="globalExceptionResol ...
- 【spring】-- springboot配置全局异常处理器
一.为什么要使用全局异常处理器? 什么是全局异常处理器? 就是把错误异常统一处理的方法. 应用场景: 1.当你使用jsr303参数校验器,如果参数校验不通过会抛异常,而且无法使用try-catch语句 ...
- 记一次spring boot中MongoDB Prematurely reached end of stream的异常解决
在spring boot项目中使用了mongodb,当一段时间没有操作mongodb,下次操作mongodb时就会出现异常.异常如下: org.springframework.data.mongodb ...
- springmvc中拦截器与springmvc全局异常处理器的问题
最近在做一个练手的小项目, 系统架构中用了springmvc的全局异常处理器, 做了系统的统一异常处理. 后来加入了springmvc的拦截器, 为了一些需求, 在拦截器中的 preHandle 方法 ...
- SpringBoot项目中的全局异常处理器 Failed to invoke @ExceptionHandler method
文件下载代码 @RequestMapping(value = { "/data/docking/picture/{id}/{empi}" }) public JsonApi pic ...
随机推荐
- iOS-tableView会卡顿
其实影响tableView卡顿的因素有很多,我也就其中一些常见的问题来说一下. 在tableView里的tableViewCell中使用许多图片的时候,而且我们大量使用的是 xxx.clipsToBo ...
- struts2的配置文件为什么可以使用${}符号?
转自:https://www.cnblogs.com/sharpest/p/6030265.html 一.#符号的用途一般有三种. “#”主要有三种用途: 1. 访问OGNL上下文和Action上下文 ...
- Scrapy命令和备注
Scrapy命令和备注 1.创建一个新项目(命令行) project是项目名 scrapy startproject <project_name> 2.调试项目(pycharm) 在pyc ...
- 160719、Spring + Dubbo + zookeeper (linux) 框架搭建
转载一篇博客,写得不错(至少我参考一下搭建成功了) 转载地址:http://my.oschina.net/wangt10/blog/522799 dubbo简介 节点角色说明: Provider: 暴 ...
- 将list集合,元素随机打乱
for循环+随机数 实现相同位置的元素交换 public <T> void shuffle(List<T> list) { int size = list.size(); Ra ...
- c#读取excel到dataset
public DataSet TransExcelToDataSet(string fileName, List<string> sheetNames) { OleDbConnection ...
- ini_set('date.timezone','Asia/Shanghai');
w 同样的代码,不一样的php ENV.
- lua53编译
#下载lua包lua-5.3.5 #vs2017新建个空工程,删除lua.c,luac,c,设置配置类型 动态库.dll #编译完成
- Django - ModelForm组件
一.ModelForm组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样一张学生表, ...
- Django的模型层(1)- 单表操作(下)
一.查询表记录 在学习查询表记录之前,先了解一下QuerySet,这是一种类似列表的数据类型,是由ORM创建的.我们学习查询表记录的方法时,一定要明确哪些方法返回了QuerySet类型,哪些方法返回m ...