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 ...
随机推荐
- sizeWithFont:方法使用明细
个人总结: Computing Metrics for a Single Line of Text– sizeWithFont: 同下面,换行方式默认取NSLineBreakByWordWrappin ...
- 应用IBatisNet+Castle进行项目的开发
最近在做一个项目,项目的需求不够明确,这是做项目的大忌,但是没有办法.项目的架构采用Dotnet平台使用C#进行开发,为了加快项目的开发进度,采用代码生成工具之MyGeneration 生成业务基本代 ...
- 【BZOJ3996】[TJOI2015]线性代数 最大权闭合图
[BZOJ3996][TJOI2015]线性代数 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大.其中A^T为A的 ...
- svn 插件去除已经保存的密码方法
删除掉C:\Documents and Settings\hao\Application Data\Subversion\auth\svn.simple文件夹下的文件即可. 再次访问时,会弹出要求输入 ...
- java中的printf
转载自: http://www.cnblogs.com/healthy-tree/archive/2012/08/07/2626665.html http://www.cnblogs.com/Tank ...
- 让select下的option选中
这里以默认选中当前月为例: HTML: 性别 <select name="sex" id="sex"> <option value=" ...
- explorer.exe中发生未处理的win32异常
explorer.exe中发生未处理的win32异常的错误提示,是windows系统比较常见的错误事件,多数在开机遇到,也有在电脑使用过程中遇到. 了解explorer.exe进程 从百度百科了解到, ...
- 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- 总结!linux 消耗内存和cpu 定时任务
1. c脚本 消耗内存 1)在your_directory目录下,创建文件eatmem.c ,输入以下内容 2)编译:gcc eatmem.c -o eatmem 3) 创建定时任务,每15分钟执行: ...
- 转!!ftp学习
转自:http://blog.csdn.net/wave_1102/article/details/50651433 FTP (File Transfer Protocol) 可说是最古老的协议之一了 ...