Spring MVC项目中的异常处理详解

作者:郭尕 时间:2021-12-22 09:19:20 

前言

我们在项目的开发中,难免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。

那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的 功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的。下面将介绍Spring MVC是如何处理异常的。

1. 基于配置的简单异常处理

在SpringMVC中拥有一套非常强大的异常处理机制,SpringMVC通过 HandlerExceptionResolver处理程序的异常,包括请求映射,数据绑定以及目标方法的执行时发生的异常。

Spring MVC项目中的异常处理详解

SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:

HandlerExceptionResolver,该接口的实现类有:DefaultHandlerExceptionResolver和

SimpleMappingExceptionResolver,下面就来看看如何使用简单异常处理器来处理异常。

使用 Spring MVC 提供的简单异常处理器 SimpleMappingExceptionResolver

Spring MVC配置文件

<!--配置异常处理器-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
   <property name="exceptionMappings">
       <props>
       <!--ArithmeticException算术运算异常:是出现异常的运算条件时,抛出此异常-->
           <prop key="java.lang.ArithmeticException">error</prop>
       </props>
   </property>
   <property name="exceptionAttribute" value="e"/>
</bean>

注意:

properties的键表示处理器方法执行过程中出现的异常

properties的值表示若出现指定异常时,设置一个新的视图名称,跳转到指定页面

exceptionAttribute属性设置一个属性名,将出现的异常信息在请求域中进行共享

控制器方法

@RequestMapping("/testException")
public String testException(){
   System.out.println(1/0);
   return "success";
}

在该控制器方法中抛出一个算术运算异常,运行

Spring MVC项目中的异常处理详解

2. 基于注解的全局异常处理

@ControllerAdvice:将当前类标识为异常处理的组件,是Spring提供的新注解,它是对Controller的增强,可对 controller中被 @RequestMapping注解的方法加一些逻辑处理;

@ExceptionHandler:用于设置所标识的方法处理的异常,@ExceptionHandler加在ControllerAdvice中,处理全局异常

ExceptionController 

@ControllerAdvice
public class ExceptionController {

@ExceptionHandler(value = {ArithmeticException.class,NullPointerException.class})
   public String exception(Exception e, Model model){
       model.addAttribute("e",e);
       return "error";
   }
}

@ExceptionHandler的value值可以是数组,所以可以添加许多可能出现的异常;在该方法中
当出现算数运算异常或空指针异常就会跳转到我们自己设置的异常页面,并且展示异常信息。

error.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
   <title>错误页面</title>
</head>
<body>
<h1>error</h1>
   ${e}
</body>
</html>

异常页面

Spring MVC项目中的异常处理详解

总结 

来源:https://blog.csdn.net/weixin_52986315/article/details/124909119

标签:springmvc,异常,处理
0
投稿

猜你喜欢

  • java ArrayList和Vector的区别详解

    2023-03-08 14:47:05
  • C# zxing二维码写入的实例代码

    2021-09-01 12:23:26
  • springboot多环境配置文件及自定义配置文件路径详解

    2021-09-30 03:55:54
  • Java字符编码简介_动力节点Java学院整理

    2022-01-24 23:50:38
  • Android 通过onDraw实现在View中绘图操作的示例

    2023-07-14 02:15:38
  • java求100之内的素数(质数)简单示例

    2023-11-07 03:12:32
  • 分析那些不讲武德的SDK(构造使用规范)

    2023-05-21 00:36:22
  • java 多态与抽象类详解总结

    2022-04-19 10:59:18
  • C#中计算时间差中的小数问题解决

    2023-11-02 19:38:05
  • Android四大组件之BroadcastReceiver详解

    2023-03-17 02:55:08
  • C#语法之泛型的多种应用

    2022-03-15 02:02:43
  • Android 自定义view实现进度条加载效果实例代码

    2022-12-21 05:33:48
  • Java7之forkjoin简介_动力节点Java学院整理

    2023-08-31 14:08:28
  • C#实现异步编程的方法

    2022-03-01 22:43:27
  • Spring中@Scheduled和HttpClient的连环坑

    2023-10-19 23:06:00
  • 浅谈java中String StringBuffer StringBuilder的区别

    2023-11-29 13:34:40
  • Spring如何基于aop实现事务控制

    2021-07-21 11:26:06
  • Java原生服务器接收上传文件 不使用MultipartFile类

    2023-11-09 19:31:36
  • C#窗体编程不显示最小化、最大化、关闭按钮的方法

    2023-03-03 00:04:29
  • Java的线程与进程以及线程的四种创建方式

    2022-12-01 14:11:07
  • asp之家 软件编程 m.aspxhome.com