欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringMVC 中的异常处理

程序员文章站 2024-02-17 17:49:46
...

前言
说到SpringMVC 中的异常处理,就不得不提提java基础中的异常了,相信大家也都不陌生,这里就不再概述,详细可参考【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!其次再来谈谈SpringMVC 中的异常处理。

我们都知道我们所谓的异常主要包括两类:编译异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。

实际上SpringMVC 中的异常处理的原理就是:我们编写的daoservicecontroller 出现异常都通过 throws Exception 向上抛出,最后由前端控制器交由HandlerExceptionResolver异常处理器进行异常处理!

1、搭建编码分析

接下来就是编码阶段。其主要就是自定义一个异常类和对应异常页面,核心则是HandlerExceptionResolver异常处理器,需要自定义一个类实现HandlerExceptionResolver接口并编写其中的方法resolveException,然后在springmvc.xml中配置。最后就是一些请求响应的业务逻辑以及页面的搭建了。

2、编写异常类

编写一个自定义异常类,继承Exception

//自定义异常类
package com.Exception;

public class SysException extends Exception{
    //异常提示信息字段
    private String message;

    public SysException(String message){
        this.message=message;
    }

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

    public void setMessage(String message) {
        this.message = message;
    }
}

3、编写自定义异常处理器

简单来说就是自定义一个类实现HandlerExceptionResolver接口并编写其中的方法resolveException

package com.Exception;

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

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

public class SysExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        // 获取到异常对象
        SysException sysException = null;
        if(e instanceof SysException){
            sysException = (SysException) e;
        }else{
            sysException = new SysException("系统正在维护升级ing....");
        }
        // 创建ModelAndView对象
        ModelAndView mv = new ModelAndView();
        //使用“errorMsg”存入提示信息
        mv.addObject("errorMsg",sysException.getMessage());
        mv.setViewName("error");
        return mv;
    }
}

4、在springmvc.xml中配置异常处理器

<!--配置异常处理器-->
<bean id="sysExceptionResolver" class="com.Exception.SysExceptionResolver"/>

5、编写Error.jsp、index.jsp页面

Error.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    ${errorMsg}
</body>
</html>

index.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>异常处理</h3>
<a href="user/testExcepting" >异常处理链接</a>
</body>
</html>

6、编写collector代码模拟异常

  @RequestMapping("/user/testExcepting")
    public String testException() throws SysException {
        try{
            int a=1/0;
        }catch (Exception e){
            e.printStackTrace();
            throw new SysException("查询出现错误了...");
        }
        return "success";
    }

7、运行效果

SpringMVC 中的异常处理
OK,如上效果说明SpringMVC 异常处理成功!

如果本文对你有一点点帮助,那么请点个赞呗,谢谢~

最后,若有不足或者不正之处,欢迎指正批评,感激不尽!如果有疑问欢迎留言,绝对第一时间回复!

欢迎各位关注我的公众号,里面有一些java学习资料和一大波java电子书籍,比如说周志明老师的深入java虚拟机、java编程思想、核心技术卷、大话设计模式、java并发编程实战…都是java的圣经,不说了快上Tomcat车,咋们走!最主要的是一起探讨技术,向往技术,追求技术,说好了来了就是盆友喔…

SpringMVC 中的异常处理