SSM框架异常处理

1 注解版

1.1 web层定义处理请求的方法

// 测试异常处理
@RequestMapping("show23")
public ModelAndView show23(@RequestParam("num") int num) {
    ModelAndView mv = new ModelAndView("hello");
    mv.addObject("msg", "result:" + (10/num));
    return mv;
}

1.2 web层定义处理异常的方法

@ExceptionHandler
public ModelAndView handlerException(Exception ex) {
    System.out.println("出现异常了: " + ex);
    ModelAndView mv = new ModelAndView("error");
    mv.addObject("exMessage", ex);
    return mv;
}

1.3 错误处理页面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>您的操作出现错误原因如下:</h1>
    <span style="color:red;font-size:25px;">${exMessage}</span>
</body>
</html>

1.4 启动测试

2 非注解版

2.1 自定义异常类

package cn.itcast.exception;

/**
 * 自定义异常类
 */
public class CustomException extends Exception{

    public CustomException(String exMessage) {
        super();
        this.exMessage = exMessage;
    }

    private String exMessage;

    public String getExMessage() {
        return exMessage;
    }

    public void setExMessage(String exMessage) {
        this.exMessage = exMessage;
    }
}

2.2 异常处理器实现

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;
import java.io.PrintWriter;
import java.io.StringWriter;

public class CustomHandlerExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request,
                                         HttpServletResponse response,
                                         Object handler,
                                         Exception ex) {

        // 1 发短信,发邮件通知主要负责人

        // 2 判断是自定义异常吗?
        String exMessage = "";
        if(ex instanceof CustomException) {
            // 2.1 如果是自定义异常, 获取异常信息
            CustomException customException = (CustomException) ex;
            exMessage = ((CustomException) ex).getExMessage();
        }else {
            // 2.2 其他异常, 获取异常信息
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);
            ex.printStackTrace(printWriter);
            CustomException customException = new CustomException(stringWriter.toString());
            exMessage = customException.getExMessage();
        }

        // 3 给浏览器返回响应信息
        ModelAndView mv = new ModelAndView("error");
        mv.addObject("exMessage", exMessage);
        return mv;
    }
}

2.3 错误页面

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>您的操作出现错误原因如下:</h1>
    <span style="color:red;font-size:25px;">${exMessage}</span>
</body>
</html>

2.4 异常处理器配置

<bean class="cn.itcast.exception.CustomHandlerExceptionResolver"/>

2.5 异常测试

// 测试异常处理
@RequestMapping("show23")
public ModelAndView show23(@RequestParam("num") int num) {
    ModelAndView mv = new ModelAndView("hello");
    mv.addObject("msg", "result:" + (10/num));
    return mv;
}

equestParam(“num”) int num) {
ModelAndView mv = new ModelAndView(“hello”);
mv.addObject(“msg”, “result:” + (10/num));
return mv;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值