SpringMVC自定义异常处理

1.异常处理器:

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

 2.异常处理速度:

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

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

SpringMVC自定义异常处理_第1张图片

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中配置


   

6.异常页面:


${error }

7.测试异常:

你可能感兴趣的:(spring)