禍兮福所倚,福兮禍所伏

          想隨便當(dāng)個(gè)小職員,隨便賺點(diǎn)錢然后隨便和一個(gè)不美也不丑的普通女孩結(jié)婚,隨便生兩個(gè)孩子,先生個(gè)女孩再生個(gè)男孩。等女兒結(jié)婚,兒子也能夠獨(dú)擋一面的時(shí)候,然后就退休,然后每天過著下著象棋和圍棋的悠閑生活。然后在自己的老婆死之前自己先老死這種生活多美好呀!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            0 Posts :: 8 Stories :: 0 Comments :: 0 Trackbacks

             除了錯(cuò)誤處理機(jī)制以外,一個(gè)表示層框架必須提供本地異常信息的顯示和反饋機(jī)制。一個(gè)可行的方式是捕獲實(shí)際的異常和錯(cuò)誤內(nèi)容到日志文件中然后發(fā)送一個(gè)有意義的信息幫助用戶決定適當(dāng)?shù)牟僮鳌T趈sp中沒有捕獲的異常,都將由jsp1.2規(guī)范定義的錯(cuò)誤頁面機(jī)制處理。類似的,在servlets中沒有處理的異常將由web.xml定義的errorpage屬性處理。struts提供了一個(gè)簡單的機(jī)制,這個(gè)機(jī)制使用相同的錯(cuò)誤頁面機(jī)制處理jsp和servlet容器的未處理的異常。struts-config.xml文件例子略。
             異常處理機(jī)制是建立在錯(cuò)誤處理機(jī)制的基礎(chǔ)上的,因此也是使用消息資源提供本地消息信息。下面的圖示解釋了struts涉及到異常處理機(jī)制的類關(guān)系。

              分派的角色
              就像在RequestProcessor一節(jié)討論的一樣,request processor調(diào)用request handler的execute方法。任何request handler拋出的異常都被RequestProcessor捕獲然后在strutsconfig.xml中找到可能的匹配。RequestProcessor會(huì)調(diào)用ActionMapping.findException方法找到一個(gè)ExceptionConfig配置對(duì)象(是元素的運(yùn)行時(shí)表現(xiàn)形式),它的類型屬性匹配異常類型。如果找不到一個(gè)配置,findException方法會(huì)一直沿著超類找匹配到最頂層類的匹配。ActionMapping.findException會(huì)在本地范圍和全局范圍的ActionMapping對(duì)象搜索元素。下面是一個(gè)全局對(duì)象元素定義的例子略。
              異常處理AppException
              在request handlers中這是一個(gè)創(chuàng)建exceptions的基類。它封裝了異常發(fā)生原因?qū)傩裕ǎ┖拖嚓P(guān)的ActionError對(duì)象。一個(gè)AppException的子類可以提供合適的構(gòu)造函數(shù),通過可選的屬性名和對(duì)象參數(shù),用消息key正確初始化對(duì)象。消息key可以從和異常對(duì)應(yīng)的ExceptionConfig對(duì)象中獲得。涉及到AppException的API是構(gòu)造函數(shù)列表(可以被子類調(diào)用),AppException作為ExceptionHandler.execute的方法參數(shù)傳遞的。

              轉(zhuǎn)換異常到ActionErrors中
              RequestProcessor查詢ExceptionConfig的異常處理定義。RequestProcessor創(chuàng)建特定的ExceptionHandler并調(diào)用它的execute方法并傳AppException作為參數(shù)。org.apache.struts.action.ExceptionHandler的一個(gè)默認(rèn)的異常處理是預(yù)先配置在ExceptionConfig對(duì)象中的。ExceptionHandler從AppException對(duì)象獲得ActionError對(duì)象,然后根據(jù)ErrorsTag創(chuàng)建ActionErrors對(duì)象使用。如果異常不是AppException類或其繼承類,ExceptionHandler會(huì)用定義的元素創(chuàng)建一個(gè)ActionErrors對(duì)象。這樣就減輕了請(qǐng)求處理的開發(fā)人員寫額外的異常處理代碼。然而這樣就限制了框架僅能調(diào)用ActionError的一個(gè)構(gòu)造函數(shù),接收一個(gè)key參數(shù)值。如果需要可以用元素覆蓋默認(rèn)的異常處理。ExceptionHandler類或其子類會(huì)使用ExceptionConfig中的路徑屬性創(chuàng)建一個(gè)ActionForward對(duì)象。如果該路徑?jīng)]有定義,那么就會(huì)使用ActionMapping配置對(duì)象中的輸入屬性中定義的路徑。ExceptionHandler也用Action.EXCEPTION_KEY保存原始的異常到請(qǐng)求對(duì)象中。一個(gè)視圖可以用任何方式自由處理這個(gè)信息。Action.EXCEPTION_KEY也可以被servlet容器的錯(cuò)誤頁面機(jī)制使用來獲得根據(jù)原始異常重新拋出的異常。

          posted on 2005-06-09 09:09 塞翁 閱讀(140) 評(píng)論(0)  編輯  收藏 所屬分類: Java翻譯
          主站蜘蛛池模板: 揭阳市| 兰溪市| 绥芬河市| 榆社县| 镇巴县| 当雄县| 洞头县| 荃湾区| 内乡县| 洱源县| 满洲里市| 大理市| 英吉沙县| 麦盖提县| 凉城县| 乌兰浩特市| 府谷县| 伊吾县| 香河县| 仲巴县| 黔西县| 天门市| 富锦市| 延安市| 青岛市| 集安市| 绥芬河市| 永宁县| 景德镇市| 天镇县| 会同县| 吉木萨尔县| 德州市| 财经| 资兴市| 永年县| 德清县| 霍山县| 湘乡市| 新化县| 丰都县|