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>

测试

------->

相关推荐
皮皮林55110 小时前
使用 Java + WebSocket 实现简单实时双人协同 pk 答题
java·websocket
码小凡12 小时前
优雅!用了这两款插件,我成了整个公司代码写得最规范的码农
java·后端
掉鱼的猫13 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·后端
java金融14 小时前
FactoryBean 和BeanFactory的傻傻的总是分不清?
java·后端
独立开阀者_FwtCoder14 小时前
Nginx 通过匹配 Cookie 将请求定向到特定服务器
java·vue.js·后端
名曰大神14 小时前
AEM6.5集成Redis详细步骤(附代码)
java·redis·demo·aem
带刺的坐椅14 小时前
Solon AI 五步构建 RAG 服务:2025 最新 AI + 向量数据库实战
java·redis·ai·solon·rag
东阳马生架构15 小时前
商品中心—7.自研缓存框架的技术文档
java
晴空月明17 小时前
线程安全与锁机制深度解析
java
天天摸鱼的java工程师18 小时前
你如何处理一个高并发接口的线程安全问题?说说你做过的优化措施
java·后端