业务异常的设计
业务异常的层次结构设计在开发中也是非常重要的要作,业务异常体系结构的设计方法将直接影响
到异常处理的方法.
对于异常系统的结构通常会被划分为三个层次,第一层为异常的基类,第二层为功能层或者模块层,
第三层为业务异常层,层与层之间是父子工的继承关系.
对于一个通用的异常系统而言,通常会定义一个异常基类,假设是BaseException,该类继承自RuntimeException
之所以将业务异常的基类定义为RuntimeException,是因为业务异常是否需要开发人员在开发过程中进行捕获的
对于业务异常的捕获交给系统的框架或者表示层来完成.
接下来,在BaseException的基础之上,还要为应用中的每个层次定义一个异常基类.例如,业务层的异常
可以定义为BusinessException,持久层的异常可以定义为DAOException等.当然,这一层次的异常也可以按照
功能或者模块来进行划分,划分的方式主要依赖于顶层对异常的处理方法.
最后,就是为每一个业务异常定义相应的业务对象.另外,为减少异常对象的数量,在这一层也可以采取错误
代码,使得顶层的拦截程序可以依据错误代码来得到相应的错误信息.
异常处理方法
Servlet容器中异常的处理
在web.xml文件中进行异常处理的配置是通过<error-page>元素来进行的,它支持两种类型的异常拦截.
<error-page>
<error-code>404</error-code>
<location>/error/notFound.jsp</location>
</error-page>
<error-page>
<error-type>java.lang.NullPointException</error-type>
<location>/error/nullPointer.jsp</location>
</error-page>
从JSP 2.0开始,除了在错误页面中可以使用绑定到request的exception对象外,还增加了一个名称为
errorData的绑定到pageContext的对象,该对象是javax.servlet.jsp.ErrorData类的实例,它可以当做
一个普通的Bean来使用,通过它的属性可以了解到异常的更多信息.
其属性如下:
属性 类型 描述
requestURI String 发生请求失败的URI
servletName String 发生错误的Servlet或者JSP页面的名称
statueCode int 发生错误的状态码
throwable Throwable 导致当前错误的异常
例如:
...
<title>404状态码错误的页面</title>
...
<jsp:useBean id="now" class="java.util.Date" />
发生异常的时间:${now}<br>
请求的地址: ${pageContext.errorData.requestURI }<br>
错误状态码: ${pageContext.errorData.statueCode }<br>
异常: ${pageContext.errorData.throwable }
...
自定义异常页面
自己在JSP页面中的定义将会覆盖在web.xml中的定义
自定义异常页面的方法如下
<%@ page errorPage="/error/errorPage.jsp" %>
posted on 2007-08-28 21:19
Ke 阅读(398)
评论(0) 编辑 收藏 所属分类:
struts