项目平台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的异常抛出,并能被统一的异常处理对象处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值