SpringMVC 中的异常处理
系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理 1 编写异常类和错误页面
代码语言:javascript复制/**
* 自定义异常类
* 这是一个新建的类
*/
public class SysException extends Exception{
//存储提示信息
public String message;
public SysException(String message) {
this.message = message;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
代码语言:javascript复制<body>
执行失败!
${ errorMsg}
</body>
编写控制层模拟抛出异常
代码语言:javascript复制@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/testException")
public String testException() throws SysException{
System.out.println("testException执行了。");
try {
//模拟异常
int i=1/0;
} catch (Exception e) {
//打印异常信息
e.printStackTrace();
//向上抛出自定义异常信息
throw new SysException("查询所有用户出现了错误。。");
}
return "success";
}
}
请求页面
代码语言:javascript复制<body>
<h3>异常处理</h3>
<a href="user/testException" >异常处理</a>
</body>
自定义异常处理器
代码语言:javascript复制/**
* 异常处理器
* 这是一个新建的类
*/
public class SysExceptionResolver implements HandlerExceptionResolver {
/**
* 处理异常的业务逻辑
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param
* @return
*/
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception ex) {
//获取到异常对象
SysException e=null;
//如果异常是sysexception类型的
if (ex instanceof SysException){
e=(SysException) ex;
}else{
e=new SysException("系统正在维护");
}
//创建model and view 对象
ModelAndView mv=new ModelAndView();
mv.addObject("errorMsg",e.getMessage());
//跳转到哪个页面
mv.setViewName("error");
return mv;
}
}
在springmvc中配置异常处理器
代码语言:javascript复制 <!--配置异常处理器-->
<bean id="sysExceptionResolver" class="com.rpf.exception.SysExceptionResolver"></bean>