Springmvc自定义异常处理器实现流程解析

网友投稿 292 2022-12-02


Springmvc自定义异常处理器实现流程解析

当dispatchServlet接收到controller抛出的异常时,会将异常交由 HandlerExceptionResolver

异常处理器处理!我们可以创建自定义异常处理器实现该接口来处理自定义异常

1) 自定义异常类

public class MyException extends Exception {

// 异常信息

private String message;

public MyException() {

super();

}

public MyException(String message) {

super();

this.message = message;

}

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

}

2)自定义异常处理器

public class CustomHandleException implements HandlerExceptionResolver {

@Override

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,

Exception exception) {

// 定义异常信息

String msg;

// 判断异常类型

if (exception instanceof MyException) {

// 如果是自定义异常,读取异常信息

msg = exception.getMessage();

} else {

// 如果是运行时异常,则取错误堆栈,从堆栈中获取异常信息

Writer out = new StringWriter();

PrintWriter s = new PrintWriter(out);

exception.printStackTrace(s);

msg = out.toString();

}

// 把错误信息发给相关人员,邮件,短信等方式

// TODO

// 返回错误页面,给用户友好页面显示错误信息

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject(JALyegb"msg", msg);

modelAndView.setViewName("error");

return modelAndView;

}

}

3)在springmvc.xml中配置异常处理器

id="customHandleException" class="cn.itcast.ssm.exception.CustomHandleException"/>

4)定制错误页面

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

id="customHandleException" class="cn.itcast.ssm.exception.CustomHandleException"/>

4)定制错误页面

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>



5)测试异常处理

@RequestMapping(value = "/item/itemlist.action")

public ModelAndView itemList() throws MyException{

List list = itemService.selectItemsList();

if(true){

throw new MyException("商品列表不能为空!!");

}

ModelAndView mav = new ModelAndView();

mav.addObject("itemList", list);

mav.setViewName("itemList");

return mav;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Springmvc自定义参数转换实现代码解析
下一篇:使用Java注解模拟spring ioc容器过程解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~