項目平臺JUMP表述(三):異常處理機制

聲明:JUMP文章僅作學習用途
基本設計思想

  • 系統所發生的任何異常或者錯誤對操作用戶來說都是系統”運行時”異 常,都是這個應用系統內部的異常。
  • 異常轉譯是針對所有繼承Throwable超類的類而言的,從編程的語法角度講,其子類之間都可以相互轉換。
  • 將這些檢查異常Exception和錯誤Error轉換爲 RuntimeException異常,讓程序員根據情況來決定是否捕獲和處理所發生的異常。

設計異常機制
1,異常碼設計
設計10爲=四位應用系統編號+兩位模塊編號+四位應用錯誤碼
四位應用錯誤從0000~9999,其中特別設計配置錯誤,校驗錯誤,邏輯錯誤,系統錯誤等所處在的範圍,如配置錯誤是6000~6999。
2,異常碼定義
創建異常碼文件:jump_errors.properties、jump_errors_en.properties、messages.properties、values.properties等
放置異常碼文件:com.bocom.jump.config_xxx
應用配置

<x:bean id="messageProvider" class="com.bocom.jump.xxx.DefaultMessageProvider">//提供默認的消息組裝,獲得
    <x:property name="dataDictionary" ref="dataDictionary"/>
    <x:property name="defaultErrorKey" ref="unknown"/>
    <x:property name="valuesMessageSource" >
          <x:bean 
          class="com.bocom.bbip.support.message.ReloadableResourceBundleMessageSource"/>
          //裝載message資源文件,獲取消息格式,文件,時間戳等
            <x:property name="useCodeAsDefaultMessage" vaule="true"/>
            <x:property name="basenmaes" vaule="classpath*:config/msg/errors"/>
            <x:property name="cacheSeconds" vaule="-1"/>  
            <x:property name="defaultEncoding" vaule="UTF-8"/>
           </x:bean>   
    </x:property>
    <x:property name="errorMessageSource" >
          <x:bean 
          class="com.bocom.bbip.support.message.ReloadableResourceBundleMessageSource"/>
            <x:property name="useCodeAsDefaultMessage" vaule="false"/>
            <x:property name="basenmaes" vaule="classpath*:config/msg/values"/>
            <x:property name="cacheSeconds" vaule="-1"/>  
            <x:property name="defaultEncoding" vaule="UTF-8"/>
           </x:bean>   
    </x:property>
    <x:property name="defaultMessageSource" >
          <x:bean 
          class="com.bocom.bbip.support.message.ReloadableResourceBundleMessageSource"/>
            <x:property name="useCodeAsDefaultMessage" vaule="true"/>
            <x:property name="basenmaes" vaule="classpath*:config/msg/messages"/>
            <x:property name="cacheSeconds" vaule="-1"/>  
            <x:property name="defaultEncoding" vaule="UTF-8"/>
           </x:bean>   
    </x:property>

3,異常碼輸出
前面有解釋異常碼的設計,下面給出具體配置
一:定義一個全局系統配置bean

<x:bean id="systemCode" class="com.bocom.jump.xxx.SystemConfig">
    <x:property name="systemCode" valuse="${system.code}"/>//動態加載4位系統簡稱
</x:bean>

二:在異常處理bean定義中增加屬性“rebuildMessageCode”設置

<x:bean id="excepitonHandler" class="com.bocom.jump.channel.interceptors.DefaultExceptionHandler">
    <x:property name="messageProvider" ref="messagesProvider"/>
    <x:property name="messageCodeMapping" 
        <x:map />
    </x:property>
    <!--添加個性配置true:以應用簡稱打頭輸出,false:保持原樣以JUMP字符打頭輸出-->
    <!--<<x:property name="rebuildMessageCode" value="ture"/>>-->    
</x:bean>

*附上默認異常處理類部分代碼(DefaultExceptionHandler)

public class DefaultExceptionHandler implements ExceptionHandler{
      //定義私有成員變量。加上set方法
      private String xx;...
      //構造函數:初始化參數
      public DefaultExceptionHandler(){
            a="errorCode";b="errorMsg";c="JUMP[A-Z]{2}[0-9]{4}";h=true;i=false;
      }

}

自定義系統異常
1,基礎類
業務邏輯處理異常(Bussiness Excepiton)
運行期系統級異常(Runtime Exception)
數據庫處理異常(DB Exception)
通訊異常(Communication Exctpion)

2,處理策略
業務邏輯處理異常(Bussiness Excepiton)
: 都以JUMPXX的CoreExcepiton拋出錯誤碼,對應錯誤信息統一由配置的exception handler統一處理。
運行期系統級異常(Runtime Exception)
: 由JUMPXX技術處理爲JUMPXX錯誤碼拋出,平臺統一的exception handler配置對應的錯誤碼,及錯誤信息,當出現運行期異常時,也能返回相應的錯誤信息給請求方。
數據庫處理異常(DB Exception)
: 系統再通訊代碼端,一定要捕獲相應異常,轉化爲CoreExcepiton業務邏輯異常拋出。
通訊異常(Communication Exctpion)
: 系統中不做處理,JUMPXX會當作捕獲後包裝成JUMPXX的異常拋出,並能被統一的異常處理對象處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章