業務異常的設計
業務異常的層次結構設計在開發中也是非常重要的要作,業務異常體系結構的設計方法將直接影響
到異常處理的方法.
對于異常系統的結構通常會被劃分為三個層次,第一層為異常的基類,第二層為功能層或者模塊層,
第三層為業務異常層,層與層之間是父子工的繼承關系.
對于一個通用的異常系統而言,通常會定義一個異常基類,假設是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 閱讀(403)
評論(0) 編輯 收藏 所屬分類:
struts