SpringMVC笔记——配置异常处理

news/2024/10/19 4:21:32/

什么是SpringMVC的异常处理


Spring MVC提供了一种灵活的方式来处理Web应用程序中的异常。有多种方式可以处理异常,包括标准的Spring异常处理器和特殊的@ExceptionHandler方法。

以下是Spring MVC处理异常的几种方式:

  1. 使用Spring @ControllerAdvice注解:通过使用@ControllerAdvice,我们可以将所有的异常处理程序集中在一个地方。只需要在类上加上@ControllerAdvice注解,然后在类中添加一个或多个由@ExceptionHandler注解标记的方法。
  • 然后使用Spring @ExceptionHandler注解:@ExceptionHandler注解提供了一种处理特定异常的方式。当控制器抛出此类异常时,这个方法就会被调用。
  1. 实现HandlerExceptionResolver接口:你可以创建一个实现了HandlerExceptionResolver接口的类来全局处理异常。这允许你在没有使用@ControllerAdvice或@ExceptionHandler时进行全局异常管理。

  2. 使用SimpleMappingExceptionResolver:这是一个实现了HandlerExceptionResolver接口的类,它允许你将特定的异常映射到视图名。

这些机制让开发者能够更好地管理和控制发生在应用程序中的错误和异常,提高用户体验,并允许对错误进行更好地记录和分析。

xml映射处理异常


spring的配置文件中加入以下代码:

<!--配置异常处理-->  
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">  <!--异常映射-->  <property name="exceptionMappings">  <props>  <!--映射对应的异常,捕获到就跳转/WEB-INF/templates/error.html-->  <prop key="java.lang.ArithmeticException">error</prop>  </props>  </property>  <!--异常信息映射请求域-->  <property name="exceptionAttribute" value="ex"/>  
</bean>

controller 添加测试类,添加error页面:

java">@RequestMapping("/test")  
public String test() {  int i = 1 / 0;  return "hello world";  
}  

这边使用的是一个大佬的404页面,原地址:https://github.com/yansheng836/404pages/blob/master/WebRoot/2js-animate/2_1_on-the-sea/sea-404page.html

修改代码输出报错:

<span>Page not found</span><span>404</span><span th:text="${ex}"></span>

效果如下:

注解处理异常


tip:记得注释刚刚的代码,不然会冲突

1. 新建异常处理类


记得让组件能够扫描到这个包

2. 添加 @ControllerAdvice注解

java">@ControllerAdvice  
public class testExceptionHandler {  
}

3. 异常处理方法上添加 @ExceptionHandler,value设置为需要处理的异常

java">@ExceptionHandler(value = ArithmeticException.class)  
public String arithmeticException() {  
}

value 的值可以设置多个
value = {ex1.class, ex2.class, ex3.class}

4. 设置跳转地址

java">@ControllerAdvice  
public class testExceptionHandler {  @ExceptionHandler(value = ArithmeticException.class)  public String arithmeticException() {  return "error";  }  
}

5. Model参数获取异常请求域

java">@ControllerAdvice  
public class testExceptionHandler {  @ExceptionHandler(value = ArithmeticException.class)  public String arithmeticException(Exception ex,Model model) {  model.addAttribute("ex",ex);  return "error";  }  
}


http://www.ppmy.cn/news/1436520.html

相关文章

飞行汽车飞行控制系统功能详解

飞行汽车是一种创新的交通工具&#xff0c;结合了汽车和飞机的特点。它可以在陆地上行驶&#xff0c;同时也具备在空中飞行的能力。飞行汽车的概念已经存在多年&#xff0c;并且近年来随着技术的进步和研发的深入&#xff0c;这种交通工具正在逐渐从概念走向现实。 飞行汽车的…

python逆向基础流程(纯小白教程)

一&#xff0c;例题链接 NSSCTF | 在线CTF平台 二&#xff0c;文件特征 使用工具查看文件信息&#xff0c;发现是pyinsatller打包的exe文件&#xff0c;如果硬用ida分析成汇编或c语言根本摸清楚程序的逻辑&#xff0c;所以思路是反编译成py文件直接分析python代码 三&#xf…

Cocos Creator 天空盒预制体生成与定时器详解

前言 在游戏开发中&#xff0c;天空盒是一个非常重要的元素&#xff0c;它可以帮助营造出游戏中的环境和氛围。在Cocos Creator中&#xff0c;我们可以通过预制体生成和定时器来实现天空盒的动态效果。在本文中&#xff0c;我们将详细介绍如何使用Cocos Creator来实现天空盒的…

【OceanBase系列】—— 常用运维操作(备忘)

作者简介&#xff1a; 花名&#xff1a;绪宁&#xff0c;OceanBase 数据库解决方案架构师 创建租户 方法一&#xff1a;OCP 创建 确认可分配资源 具体可以分配多少内存&#xff0c;可以通过【资源管理】查看各节点的剩余资源 2. 新建租户 3. 填写租户信息 zone 优先级主要是 p…

axios 实现上传、下载

一、下载&#xff08;支持批量下载&#xff09; const downloadFile (fileList) > {console.log(fileList, 下载list)fileList.forEach((e) > {const uid uuidv4()const CancelToken axios.CancelTokenlet source CancelToken.source()transmissionStore().setDownlo…

爬虫抓取网站数据

Fiddler 配置fiddler工具结合浏览器插件 配置fiddler Tools--Options 抓包技巧 谷歌浏览器开启无痕浏览,使用SwitchyOmega配置好代理端口 Ctrl x 清理所有请求记录,可以删除指定不需要日志方便观察 设置按请求顺序 观察cookie,观察请求hesder cookie和row返回结果 Swit…

上海计算机学会2021年3月月赛C++丙组T1疫苗接种

题目描述 小爱前去接种疫苗&#xff0c;注射完第一剂后&#xff0c;医生告诉她过 14 天后再来注射第二剂。给定接种第一剂疫苗的日期&#xff08;以年-月-日表示&#xff09;&#xff0c;请输出注射第二剂的日期。 输入格式 若干字符&#xff1a;表示接种第一剂疫苗的日期。…