首页 > 其他分享 >SpringMVC之异常处理器的使用

SpringMVC之异常处理器的使用

时间:2024-01-31 19:13:32浏览次数:21  
标签:SpringMVC ex error 异常 public 处理器

  • SpringMVC的异常处理器是处理控制器方法执行过程出现的异常。
  • SpringMVC提供了一个处理异常的接口HandlerExceptionResolver
  • HandlerExceptionResolver接口有两个实现类:
    DefaultHandlerExceptionResolver实现类和SimpleMappingExceptionResolver实现类。
    DefaultHandlerExceptionResolver实现类是SpringMVC默认异常处理器。
    SimpleMappingExceptionResolver实现类是简易异常处理器,我们一般自定义配置异常处理策略就是使用该异常处理器。

基于xml文件配置异常处理器

配置异常处理器

<!-- 配置异常处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
	<!-- 配置异常视图的优先级 -->
	<property name="order" value="1"/>
	<!-- 配置异常逻辑视图映射:出现指定异常跳转到指定错误页面 -->
	<property name="exceptionMappings">
		<props>
			<!--
			 key设置要处理的异常,全类名
			 value设置出现该异常时要跳转的页面所对应的逻辑视图
			 -->
			<prop key="java.lang.ArithmeticException">error</prop>
			<prop key="java.lang.NullPointerException">error</prop>
		</props>
	</property>
	<!-- 设置异常属性:将异常信息共享到请求域中,浏览器可以获取请求域中的异常信息 -->
	<property name="exceptionAttribute" value="ex"/>
</bean>

创建视图

<a th:href="@{/test/error}">测试异常处理器</a><br/>
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>错误</title>
</head>
<body>
<h1>error.html</h1>
<hr/>
<!-- 获取请求域中的异常信息 -->
<a th:text="${ex}"></a>
</body>
</html>

编写控制器方法

    @GetMapping("/test/error")
    public String testError() {
       //出现异常
        System.out.println(10/0);
        return "success";
    }

测试
发送访问/test/error控制器方法的请求,控制器方法执行过程中出现异常处理器中配置的异常策略,跳转到指定异常视图。

基于注解配置异常处理器

@ControllerAdvice //将当前类标识为异常处理的组件
public class ExceptionController {

    //@ExceptionHandler用于设置所标识方法处理的异常
    //ex表示当前请求处理中出现的异常对象
    @ExceptionHandler(value = {ArithmeticException.class})
    public ModelAndView handleArithmeticException(Exception ex) {
        ModelAndView mad = new ModelAndView();
        mad.addObject("ex",ex);
        mad.setViewName("error");
        return mad;
    }

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

标签:SpringMVC,ex,error,异常,public,处理器
From: https://www.cnblogs.com/lisong0626/p/17999685

相关文章

  • csharp #if #endif 预处理器指令
    RemoteDesktopConnection\src\Program.cs#definedebugusingSystem;usingSystem.Text.RegularExpressions;namespaceRDP{classProgram{staticvoidMain(string[]args){varinfo=newLogInfo();#ifdebug......
  • SpringMVC拦截器的使用
    SpringMVC中的拦截器主要用于拦截控制器方法的执行。SpringMVC配置拦截器SpringMVC中的拦截器需要实现HandlerInterceptor接口publicclassFirstInterceptorimplementsHandlerInterceptor{//该方法是在控制器方法执行前执行@OverridepublicbooleanpreHandl......
  • Day62 异常02:捕获和抛出异常
    异常处理机制(trycatchfinallythrowthrows)抛出异常捕获异常异常处理的五个关键字try、catch、finally、throw、throws1.原始代码异常2.try、catch、finally(监控、捕获、善后)注意上述代码块中可以不要finally但必须有try{}catch{}finally一般用......
  • 方案|AI智能监控如何从区域入侵与摄像头异常方面助力野外农场安全监管
    大家都知道,旭帆科技的AI分析算法在监控中的应用十分广泛,除了常见的人体事件、行为事件、着装、车辆等算法,摄像头异常检测也十分重要。近期就有一个用户在我们这定制了一个野外摄像头异常检测算法系统。方案需求该用户的需求为需要在自己野外农场中配备区域入侵与摄像头异常检测......
  • 深入理解 C# 编程:枚举、文件处理、异常处理和数字相加
    C#枚举枚举是一个特殊的“类”,表示一组常量(不可更改/只读变量)。要创建枚举,请使用enum关键字(而不是class或interface),并用逗号分隔枚举项:enumLevel{Low,Medium,High}您可以使用点语法访问枚举项:LevelmyVar=Level.Medium;Console.WriteLine(myVar);Enu......
  • 深入理解 C# 编程:枚举、文件处理、异常处理和数字相加
    C#枚举枚举是一个特殊的“类”,表示一组常量(不可更改/只读变量)。要创建枚举,请使用enum关键字(而不是class或interface),并用逗号分隔枚举项:enumLevel{Low,Medium,High}您可以使用点语法访问枚举项:LevelmyVar=Level.Medium;Console.WriteLine(myVar);En......
  • 记一次MySQL从节点服务器宕机重启后,从节点出现主键冲突异常的处理
    环境MySQL5.7非GTID模式多线程复制。现象某MySQL数据库从节点因故障宕机(因故障直接宕机,非正常关闭),重启之后发现复制状态异常,showslave的结果中Slave_SQL_Running为No,错误代码为1062errorcode,从系统表performance_schema.replication_applier_status_by_worker以及errorl......
  • Day61 异常机制Error和Exception
    异常机制Error和Exception什么是异常?软件程序在运行过程中,出现的意外,我们叫异常,英文是:Exception,意思是例外。这些,例外情况,或者叫异常,怎么让我们写的程序做出合理的处理。而不至于程序崩溃。异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。......
  • OPENSSL1.1交叉编译编译异常处理
    openssl 编译异常报以下错误Operatingsystem:x86_64-whatever-linux2"glob"isnotexportedbytheFile::GlobmoduleCan'tcontinueafterimporterrorsat./Configureline18.BEGINfailed--compilationabortedat./Configureline18."glob"......
  • MT6789(G99)性能参数/datasheet_MTK联发科4G处理器
    联发科MT6789将4G智能手机带入下一代。基于高效率的台积电N6(6nm级)芯片生产工艺,该芯片可全天候实现出色的游戏,加上大摄像头,快速显示,流畅的流媒体和可靠的全球连接。合作伙伴可以定制联发科HelioG99平台,以满足其设备或市场的特定要求。与天玑700相比,MT6789去掉了5G基带。它采用八......