SpringMVC基于配置的异常处理器
作者:把苹果咬哭的测试笔记 发布时间:2023-01-19 15:34:33
一、基于配置的异常处理
SpringMVC 提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver。
HandlerExceptionResolver接口的实现类有:
DefaultHandlerExceptionResolver,这个是默认使用的处理器,之前遇到的一些异常,其实springMVC 都已经给我们处理过了。
SimpleMappingExceptionResolver,这个可以让我们自定义异常处理。当出现指定的异常,可以设置返回新的视图。
使用SimpleMappingExceptionResolver,在springMVC的配置文件中:
<!--配置异常处理-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
</bean>
示例里使用的一个处理运算异常的类ArithmeticException,里面的值 error 表示异常后跳转的视图。
对应的,新建一个error.html页:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>error</title>
</head>
<body>
出现错误
</body>
</html>
接下来,造一个异常:
@RequestMapping("/testExceptionHandler")
public String testExceptionHandler() {
System.out.println(1/0);
return "success";
}
正常情况下这个处理器会跳转到 success 页,但是里面有个 1/0的异常,所以会按照配置跳转到 error 页。
重新部署,测试一下,访问http://localhost:8080/springmvc/testExceptionHandler:
成功跳转到 error 页。
储存异常信息
此外,还可以继续属性exceptionAttribute,设置一个key用来存放异常信息,默认存在当前的请求域中:
<!--配置异常处理-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!--exceptionAttribute属性设置一个属性名,将出现的异常信息在请求域中进行共享-->
<property name="exceptionAttribute" value="ex"></property>
</bean>
那么在 error 页中就可以使用到ex来获取异常信息了。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>error</title>
</head>
<body>
出现错误
<p th:text="${ex}"></p>
</body>
</html>
重新部署,刷新下页面:
二、基于注解的异常处理
springmvc 同样也提供了一套注解,通过注解方式也可以实现上述的异常处理。
新建一个控制器 ExceptionController:
//@ControllerAdvice将当前类标识为异常处理的组件
@ControllerAdvice
public class ExceptionController {
//@ExceptionHandler 用于设置所标识方法处理的异常
@ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class})
public String testException(Exception ex, Model model){
// ex表示当前请求处理中出现的异常对象,放到请求域中
model.addAttribute("ex", ex);
return "error";
}
}
@ControllerAdvice将当前类标识为异常处理的组件。
ex表示当前请求处理中出现的异常对象,用Model放到请求域中。
现在注释掉配置文件里的处理器,重新部署下,刷新http://localhost:8080/springmvc/testExceptionHandler:
依然可以。
来源:https://blog.csdn.net/wessonlan/article/details/124812950


猜你喜欢
- 先看看效果图:中间的圆形头像和光环波形讲解请看:https://www.jb51.net/article/96508.htm周围的气泡布局,
- 本文实例讲述了Java设计模式之享元模式。分享给大家供大家参考,具体如下:解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享
- Mybatis所需要的jar包:需要引用两个jar包,一个是mybatis,另一个是MySQL-connector-Java,如果是mave
- 当我保持对连续将对象拖有时在移动后 5 6 拖/滴,看到有时不获取对象还原不回来,我不能用于以后。基本上我有对两个对象组的 canvas 在
- 本文实例讲述了Java日期操作类常见用法。分享给大家供大家参考,具体如下:一 取出当前日期时间1 代码import java.time.*;
- 实践过程效果代码public partial class Form1 : Form{ public Form1()
- 前言在这个系列博客的第二篇的最后部分提到了预布局,在预布局阶段,计算剩余空间时会把将要移除的 ViewHolder 忽略,从而计算出递补的
- 今天给大家介绍一个仿微信的图片选择器:ImageSelector。ImageSelector支持图片的单选、限数量的多选和不限数量的多选。支
- 不好意思哦,上一篇Android自学开发第六篇代码控制界面挖了个坑,如果运行不起来的同学,请注意查看本篇文章。Android Project
- 使用Castle.Core.dll实现,核心代码是使用Castle.DynamicProxy.ProxyGenerator类的CreateI
- autoMapping和autoMappingBehavior的区别autoMappingBehaviormybatis核心配置文件中set
- GC,Garbage Collect,中文意思就是垃圾回收,指的是系统中的内存的分配和回收管理。其对系统性能的影响是不可小觑的。今天就来说一
- 背景描述通常如果需要一次更新多条数据有两个方式:(1)在业务代码中循环遍历逐条更新。(2)一次性更新所有数据(更准确的说是一条sql语句来更
- 实现android双击后退键退出当前APP功能实现该功能基本思路是,1, 监听后退键 , 比较两次后退间隔 , 低于两秒则出发退出2, 退出
- 在此附上超详细JDK1.8安装与配置超详细JDK1.8安装与配置一、卸载JDK应用程序①在开始处,点击设置②点击应用③点击程序和功能④打开程
- 一、this关键字的作用this关键字除了可以强调本类中的方法还具有以下作用。1.表示类中的属性2.可以使用关键字调用本类中的构造方法3.t
- springboot上传文件大小的配置我这里记录两种,一种是设置在配置文件里只有两行代码,一种是加个Bean首先第一种:applicatio
- 本文实例为大家分享了Android内存中存储用户名和密码的方法,供大家参考,具体内容如下首先是配置文件:<LinearLayout x
- 由于今天在网上搜了一下c#写的计算器,发现大多都太繁琐了,很多没必要并且不容易理解的东西就专门写了这个博客1.首先新建一个windows窗体
- 使用Kotlin的Lambda表达式,我们可以抛弃回调接口的使用。只需设置希望后面会被调用的函数即可。示例如下新建一个Kotlin类clas