SpringMVC系列之(十一)异常处理

异常处理

1. 未进行异常处理的异常传递流程

在这里插入图片描述

2. SpringMVC异常处理流程

在这里插入图片描述

3. SpringMVC异常处理开发步骤

  1. 编写自定义异常类(做提示信息的)
  2. 编写异常处理器
  3. 配置异常处理器(跳转到错误提示页面)

4. 实现

Controller中的方法

package cn.itcast.controller;

import cn.itcast.domain.User;
import cn.itcast.exception.TestException;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;
import java.util.UUID;

/**
 * @author 商务小本本
 */
@Controller
@RequestMapping("/test")
public class HelloController {

    @RequestMapping("/testException")
    public String testException() throws TestException {
        try {
            int a = 10/0;
        } catch (Exception e) {
            e.printStackTrace();
            throw new TestException("Controller报错!!!");
        }
        return "success";
    }
}
  1. 编写自定义异常类(做提示信息的)
package cn.itcast.exception;

public class TestException extends Exception{

    private String message;

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

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

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

  1. 编写异常处理器(跳转到错误提示页面)
package cn.itcast.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 ExceptionResolver implements HandlerExceptionResolver {

    /**
     * 需要实现HandlerExceptionResolver这个接口
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param e 此处的e就是Controller中testException方法抛出的异常,此处就是TestException的实例
     * @return
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {

        ModelAndView mv = new ModelAndView();
        String message = e.getMessage();
        mv.addObject("msg", message);
        mv.setViewName("error");
        return mv;
    }
}
  1. 配置异常处理器
<bean class="cn.itcast.exception.ExceptionResolver" id="exceptionResolver"></bean>
posted @   刘二水  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示