springMVC自定义异常处理器

目录

🌱使用原因

🌳优点

🌱实现

🌳自定义一个异常

🌳异常处理

🌳测试


使用原因

系统中会有各种各样的,意料之中和意料之外的结果,我们并不能做到完全针对每个异常时刻做出针对性的处理。这时就可以使用异常处理器。

优点

实现

自定义一个异常

java 复制代码
public class MyException extends Exception{
    private String msg;

    @Override
    public String getMessage() {
        return msg;
    }

    public MyException(String message) {
        this.msg = message;
    }
    
}

msg就是异常的一个内容提示。

重写一个getMessage()方法和构造方法

异常处理

html 复制代码
 <!--xml配置自定义的常处理器-->
   <bean class="com.soft.component.ExceptionHandler"></bean>
java 复制代码
package com.soft.component;

import com.soft.exc.MyException;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class ExceptionHandler implements HandlerExceptionResolver {
    public ModelAndView resolveException(HttpServletRequest httpServletRequest,
                                         HttpServletResponse httpServletResponse,
                                         Object o, Exception e) {
       //只要当前系统出现任何异常(自定义的,非自定义的)都会被传入当前的异常处理器的Exception
        //所以就可以当系统出现错误,都会通过一个错误页面进行处理
        MyException myException = null;
        if(e instanceof MyException){
            //如果当前进来的异常就是我们自定义的MyException异常,就直接打印我们自定义的异常中的内容
            myException = (MyException)e;
        }else {
            //如果是其他异常进来,比如数学异常,空指针异常,越界异常等等。。
            // 就重新new一个自定义异常
            myException = new MyException("其他异常跳转,正在加紧修复中。。。");
        }
        //将异常信息通过ModeAndView传给前端页面
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg",myException.getMessage());
        mv.setViewName("500");
        return mv;
    }
}

500页面:

html 复制代码
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>抱歉,出错啦。。</title>
</head>
<body>
  <h1>非常抱歉</h1>
<hr>
<!--  通过thymeleaf动态获取异常中的msg内容-->
<span th:text="${msg}">动态内容</span>
</body>
</html>

测试

------->

相关推荐
野生技术架构师2 小时前
2026 Java 面试全套总结,八股 + 场景 + AI 相关面试考点
java·人工智能·面试
香吧香2 小时前
java服务异常日志只打印异常类型,没有堆栈定位分析
java·jvm·异常
qq_2518364573 小时前
AI 疾病自查功能SpringbootAI项目实战 · 技术实现文档
java·ai·ai编程
逆境不可逃4 小时前
Pi Agent 学习笔记:对话太长以后,如何压缩上下文
java
MetaLite4 小时前
JDK 8~26 核心特性一览:从 Stream 到 Scoped Values
java
wno7044 小时前
Spring Boot WebFlux增删改查
java·spring boot·后端
君顾14 小时前
上海24小时自助健身房系统开发实战指南:从架构设计到落地部署
java·开发语言·健身房
香菜TTT5 小时前
大模型上下文协议(MCP):AI 应用的“USB-C”接口技术
开发语言·人工智能·经验分享
aramae5 小时前
模拟实现strlen()函数 (C语言)
c语言·开发语言·后端
SL_staff5 小时前
别急着买商业规则引擎:90%风控场景根本不需要全量编码能力
java·程序员·groovy