SpringMVC(六)—— 异常处理机制

文章目录

    • 概念
    • SpringMVC的异常处理机制
      • 一、创建相关的类
      • 二、创建配置文件
      • 三、部署
      • 四、使用

概念

系统中的异常分为两种:

  • 预期异常:通过try-catch来捕获异常或者抛出异常;
  • 运行时异常:RuntimeException,通过测试来检测;

再mvc模式中,我们一般需要把dao层、service层、Controller层的异常一层一层往上抛,最后由前端控制器交由异常处理器处理;

SpringMVC提供全局的异常处理器,一个系统中只存在一个处理器;

自定义异常类:
自定义异常类需要继承Exception类,针对预期异常进行处理;

全局异常处理器处理思路:
对异常进行分析,如果是自定义的异常,直接取出信息,在错误页面显示,如果不是系统自定义的类型,构造一个异常类型,给它特定的标识;

SpringMVC提供了一个异常接口,需要实现HandlerExceptionResolver接口里面的方法;

SpringMVC的异常处理机制

步骤:

  1. 创建相关的类;
  2. 创建相关的配置文件;
  3. 部署;
  4. 使用;

一、创建相关的类

SpringMVC(六)—— 异常处理机制_第1张图片
自定义一个异常类CsException:

public class CsException extends Exception{
    private String message;  //记录异常信息

    public CsException(String message) {
        super(message);
        this.message = message;
    }

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

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

自定义一个全局异常处理器类CostomException:

public class CostomException implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        CsException csException;
        if(e instanceof CsException) {
            //自定义的异常类
            csException = (CsException)e;
        }else {
            //未识别的异常
            csException = new CsException("未知类型异常");
        }
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("message",csException.getMessage());
        modelAndView.setViewName("error");
        return modelAndView;
    }
}

创建一个Controller类用来测试:

@Controller
public class TestController {
    @RequestMapping("/xxx")
    public void getXXX() throws CsException {
        try {
            int a = 45/0;
        }catch (Exception e) {
            throw new CsException("分母不能为0!!");
        }
    }
}

二、创建配置文件

SpringMVC(六)—— 异常处理机制_第2张图片
创建spring.xml:





    
    

    
    

创建SpringMVC的配置文件spring-mvc.xml:





    
    

    
    

    
    
        
        
        
        
        
        
    


错误页面error.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>



    
    出错啦


${message}

配置web.xml:



  springmvc
  
  
    contextConfigLocation
    classpath:异常处理/spring.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  


  
  
    springmvc
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:异常处理/spring-mvc.xml
    
  
  
    springmvc
    /
  

三、部署

略;

四、使用

启动项目,访问http://localhost:8080/xxx,界面如下:
SpringMVC(六)—— 异常处理机制_第3张图片
如果将Controller层修改一下,如下:
SpringMVC(六)—— 异常处理机制_第4张图片
再次启动,访问:
SpringMVC(六)—— 异常处理机制_第5张图片

你可能感兴趣的:(框架)