社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。
系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。
系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:
为了区别不同的异常,通常根据异常类型进行区分,这里我们创建一个自定义系统异常。
如果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;
}
}
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;
}}
在Springmvc.xml中配置
<!-- springmvc异常处理器 -->
<bean class="com.wenhao.exception.CustomerExceptionResolver"/>
<body>
${error }
</body>
略
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!