新闻资讯
SpringMVC 中的异常处理
目录
前言
说到SpringMVC 中的异常处理,就不得不提提java基础中的异常了,相信大家也都不陌生,这里就不再概述,详细可参考【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!其次再来谈谈SpringMVC 中的异常处理。
@
我们都知道我们所谓的异常主要包括两类:编译异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。
实际上SpringMVC 中的异常处理的原理就是:我们编写的dao、service、controller出现异常都通过throws Exception向上抛出,最后由前端控制器交由HandlerExceptionResolver异常处理器进行异常处理!
1、搭建编码分析
接下来就是编码阶段。其主要就是自定义一个异常类和对应异常页面,核心则是HandlerExceptionResolver异常处理器,需要自定义一个类实现HandlerExceptionResolver接口并编写其中的方法resolveException,然后在springmvc.xml中配置。最后就是一些请求响应的业务逻辑以及页面的搭建了。
2、编写异常类
编写一个自定义异常类,继承Exception类
//自定义异常类 package com.Exception;
public class SysException extends Exception{ //异常提示信息字段 private String message;
public SysException(String message){ this.message=message;
}
@Override
public String getMessage() { return message;
}
public void setMessage(String message) { this.message = message;
}
}
3、编写自定义异常处理器
简单来说就是自定义一个类实现HandlerExceptionResolver接口并编写其中的方法resolveException
package com.Exception; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class SysExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) { // 获取到异常对象 SysException sysException = null; if(e instanceof SysException){
sysException = (SysException) e;
}else{
sysException = new SysException("系统正在维护升级ing....");
} // 创建ModelAndView对象 ModelAndView mv = new ModelAndView(); //使用“errorMsg”存入提示信息 mv.addObject("errorMsg",sysException.getMessage());
mv.setViewName("error"); return mv;
}
}
4、在springmvc.xml中配置异常处理器
<!--配置异常处理器--> <bean id="sysExceptionResolver" class="com.Exception.SysExceptionResolver"/>
5、编写Error.jsp、index.jsp页面
Error.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %> <html> <head> <title>Title</title> </head> <body> ${errorMsg} </body> </html>
index.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h3>异常处理</h3> <a href="user/testExcepting" >异常处理链接</a> </body> </html>
6、编写collector代码模拟异常
@RequestMapping("/user/testExcepting")
public String testException() throws SysException { try{
int a=1/0;
}catch (Exception e){
e.printStackTrace(); throw new SysException("查询出现错误了...");
} return "success";
}
7、运行效果
OK,如上效果说明SpringMVC 异常处理成功!
回复列表