异常控制
Author: 江南白衣
1.业务异常类
1.所以业务异常类派生于BusinessException基类。
2.原则上,要进行相同处理的异常分为一类,用ERROR_CODE标识不同。
3.出错信息统一写在errors.properties,以ERROR_CODE为主键,支持i18N,由基类提供默认的getMessage()函数。
参考BussinessException.java和OrderException.java。
2.Servlet规范里的异常控制
2.1按error-code统一定义错误页面
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
2.2按异常类型定义单独错误页面
<error-page>
<exception-type>org.sprngside.bookstore.UserNotFound</exception-type>
<location>/userNotFound.jsp</location>
</error-page>
2.3 在JSP里单独定义错误页面
<@ errorPage="error.jsp">
3.Spring MVC里的异常控制
spring-mvc可在xxx-serverlet.xml里定义default和 按Excepiton类型影射的错误页面, 和Servlet规范比,主要作了Spring特色的JSP路径转向和日志记录.参见bookstore-servlet.xml
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/error.jsp"/>
<property name="exceptionMappings">
<props>
<prop key="org.springside.framework.base.BusinessException">/businessError.jsp</prop>
</props>
</property>
</bean>
4. error.jsp的处理
error.jsp会同时处理jsp,servlet,和spring抛过来的异常
其中jsp的异常在exception 变量中.
servlet的异常在(Exception)request.getAttribute("javax.servlet.error.exception")
spring的异常在(Exception) request.getAttribute("exception")
使用 (String) request.getAttribute("javax.servlet.error.request_uri")获得 request_uri
使用 logger.error(exception.getMessage(), exception); 记录整个异常栈
大盘预测
国富论
posted on 2007-09-13 11:23
华梦行 阅读(1818)
评论(0) 编辑 收藏 所属分类:
Spring