<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    我愛oo,我愛java

    交流blog QQ:421057986 oofrank@donews

    Spring 中的異常悖論

    這個題目可能有些危言悚聽,使用Spring的同行不用害怕,只是因為工作中碰到一些問題,才偶然想到這個問題。

    首先要明確幾個問題:
    1、系統隔離原則:
        即系統間依賴應該是清晰的,不因為一個系統的故障影響其他系統,甚至整個系統。
    2、簡單應用習慣:
        普通程序員只會處理checked Exception,負責任的程序員會處理被調用的函數可能拋出的異常(根據源碼或javadoc)
     

    我們碰到一個情況:
    使用Spring的 init 特性初試化一個bean--一個使用Qutarz的調度程序。初試化過程中會拋出RuntimeException,從而造成Spring容器的整個初試化失敗。首先我們修改了程序,捕獲了所有異常,在編碼指南中加入了一句話:"所有使用Spring-init機制初試化的類必須在init中捕獲所有異常:Exception"。因為只有如此才能保證整個系統不會因為局部問題而完全癱瘓。

    我覺得這是Spring對異常處理的一個悖論:
    正方:底層異常都封裝成Runtime的,經過幾次包裝--->簡單應用習慣--->異常被拋出領域層(init場景下:由Spring處理)
    反方: 一個類的失敗可以造成整個系統的失敗---->Spring被RuntimeException宕掉---->不符合系統隔離原則


    當然充分的測試可能可以解決這個問題:但是要注意,測試只能證明系統有bug,不能證明系統沒有bug。

    解決方案:
    1、好的設計習慣:將應該隔離的系統隔離開-->使用不同的Spring配置文件.
    2、接口層錯誤處理:在接口層應該盡量對可以處理的異常進行處理,然后以合理的方式傳遞給上層.


    PS:在與人交互的系統中都應該給最終用戶合理的錯誤提示,所以表現層應該盡量捕獲非業務的RuntimeException給最終用戶更好的操作感受。

    posted on 2006-01-19 21:40 兼聽則明 閱讀(248) 評論(0)  編輯  收藏 所屬分類: java


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品一区二区三区四区乱码| 国产亚洲综合网曝门系列| 久久精品国产亚洲av高清漫画 | 好男人资源在线WWW免费| 国产区卡一卡二卡三乱码免费| 亚洲另类无码一区二区三区| 妞干网手机免费视频| 亚洲欧美成aⅴ人在线观看| 免费看无码自慰一区二区| 亚洲AV无码专区在线电影成人| 午夜爱爱免费视频| 国产亚洲视频在线观看网址| 四虎影库久免费视频| 人妻仑乱A级毛片免费看| 亚洲人成在线播放网站| 99久久免费看国产精品| 久久久久亚洲av无码专区导航 | 亚洲国产视频网站| 免费a级毛片无码a∨蜜芽试看| 亚洲午夜福利在线视频| 白白国产永久免费视频| 一级特级女人18毛片免费视频| 亚洲国产精品嫩草影院在线观看 | 亚洲国产无套无码av电影| 久久国产乱子伦精品免费看| 亚洲国产成人无码av在线播放| 成年美女黄网站色大免费视频| 香蕉97碰碰视频免费| 亚洲成AV人片在线观看无码| 成人免费在线看片| 色婷婷六月亚洲综合香蕉| 亚洲中文久久精品无码| 8x8x华人永久免费视频| 亚洲日韩国产AV无码无码精品| 亚洲人成网站在线观看青青| 91香蕉国产线在线观看免费| 亚洲精品无码久久久久秋霞| 亚洲欧洲日产国码无码网站| 成年在线观看网站免费| 一级毛片aaaaaa视频免费看| 亚洲国产夜色在线观看|