SpringMVC自定义异常处理 - Go语言中文社区

SpringMVC自定义异常处理


1.异常处理器:

springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。

 2.异常处理速度:

系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。

系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:

3.自定义异常类:

为了区别不同的异常,通常根据异常类型进行区分,这里我们创建一个自定义系统异常。

如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。

MessageException.java

package com.wenhao.exception;

public class MessageException extends Exception{

    private String msg ;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public MessageException(String msg) {
        super();
        this.msg = msg;
    }
}

 4.自定义异常处理器:

CustomerExceptionResolver.java

package com.wenhao.exception;

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

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

/**
 * 异常处理器的自定义实现类
 * @author Administrator
 *
 */
public class CustomerExceptionResolver implements HandlerExceptionResolver{

    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj,
            Exception e) {

        ModelAndView modelAndView = new ModelAndView();
        //判断是已知异常还是未知异常
        if(e instanceof MessageException) {
            //预期异常
            MessageException me = (MessageException)e;
            modelAndView.addObject("error", me.getMsg());
        }else {
            modelAndView.addObject("error", "未知异常!!!!!!");
        }
        modelAndView.setViewName("error");
        
        return modelAndView;
    }

}

5.异常处理器配置:

在Springmvc.xml中配置

<!-- springmvc异常处理器 -->
    <bean class="com.wenhao.exception.CustomerExceptionResolver"/>

6.异常页面:

<body>
${error }
</body>

7.测试异常:

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/A_jungle/article/details/82386793
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 19:39:02
  • 阅读 ( 886 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢