异常处理
来源:互联网 发布:培训矩阵 含义 编辑:程序博客网 时间:2024/06/05 13:06
1. 异常介绍
异常,就是不正常。异常可以分类为预期的异常和运行时异常。预期异常可以通过捕获进行处理,运行时异常只能通过规范代码,增加测试来减少。
2. 异常处理思路
请求流程:客户端(浏览器)->前端控制器(DispatcherServlet)->表现层(controller)->业务层(service)-持久层(dao)。
处理思路:从dao层开始,每一层发生异常,都向上一层抛出,一直抛到前端控制器,前端控制器需要调用一个异常处理器来处理异常,返回一个友好的提示页面。
3. 异常处理思路
请求流程:客户端(浏览器)->前端控制器(DispatcherServlet)->表现层(controller)->业务层(service)-持久层(dao)。
处理思路:从dao层开始,每一层发生异常,都向上一层抛出,一直抛到前端控制器,前端控制器需要调用一个异常处理器来处理异常,返回一个友好的提示页面。
4. 自定义系统异常类型
public class MyException extends Exception {// 异常消息private String message;/** * */public MyException() {super();}/** * @param message */public MyException(String message) {super();this.message = message;}/** * @return the message */public String getMessage() {return message;}/** * @param message the message to set */public void setMessage(String message) {this.message = message;}}
5. 自定义异常处理器
说明:自定义异常处理器需要实现接口(HandlerExceptionResolver)。
public class MyExceptionHandler implements HandlerExceptionResolver {/* (non-Javadoc) * @see org.springframework.web.servlet.HandlerExceptionResolver#resolveException(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, java.lang.Exception) */@Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) {// TODO Auto-generated method stub// 1.声明系统异常MyException mye = null;if(ex instanceof MyException){mye = (MyException) ex;}else{// 如果不是系统异常,叫做未知异常mye = new MyException("未知异常!");}// 2.创建ModelAndView对象ModelAndView mav = new ModelAndView();mav.addObject("message", mye.getMessage());mav.setViewName("error/error");return mav;}}
6. 配置异常处理器
说明:但凡自定义的都需要在springmvc.xml文件中配置。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <!-- 配置组件扫描controller --> <context:component-scan base-package="cn.mbx.ssm.controller"></context:component-scan> <!-- 注解驱动方式配置处理器映射器,处理器适配器 --> <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> <!-- 配置转换服务 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="cn.mbx.ssm.converter.DateConverter"></bean> </set> </property> </bean> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 配置视图的公共目录路径 --> <property name="prefix" value="/WEB-INF/jsp/"></property> <!-- 配置视图扩展名称 --> <property name="suffix" value=".jsp"></property> </bean> <!-- 异常处理器配置 --> <bean class="cn.mbx.ssm.exception.MyExceptionHandler"></bean></beans>
阅读全文