异常处理设计

前段时间设计了一个异常处理,效果还可以,但还不是很满意, 不知道别人的异常处理是个什么样子,贴出来跟大家讨论一下。先看类图:

 异常处理

 

1 在开发应用时会对模块信息先进行记录,包括:模块名、模块编码、模块描述、默认异常级别、Action类、Service类、DAO类和其它调用的类等等。

2 会对异常级别的处理方式以及要处理的包进行配置,这些信息由ApplicationConfig来解析并缓存。

<exception>
  <packages description="需要处理的包">
   <package>com.exp.test</package>
  </packages>
  <priority description="优先级和处理方式">
   <level name="LOWEST" value="1" mode="print,file,database" filePath="d://lowest_exception.log"></level>
   <level name="LOW" value="2" mode="database,file" filePath="d://low_exception.log"></level>
   <level name="NORMAL" value="3" mode="database"></level>
   <level name="HIGH" value="4" mode="database,mail" mailAddress="ahzean@163.com,test@163.com"></level>
   <level name="HIGHEST" value="5" mode="message" number="135******"></level>
  </priority>
 </exception>

 

3 模块信息会在第一次触发异常的时候进行缓存,并建立模块编码到模块信息、Action类到模块编码、Service类到模块编码、DAO类到模块编码的HashMap映射,这样异常触发类就可以根据className迅速查找的模块信息。

异常处理过程

1 出现异常->JaspExceptionHandler对异常堆进行分析找出异常触发类、关心的出错类并查找模块信息

2 调用LogWrapperService对异常信息进行包装,这个处理过程中也将ExceptionCode中列出的常见异常代码进行翻译,同时记录了用户的相关信息,如操作时间、用户名、客户端地址等等,最后LogWrapper中包装的信息包括提供给用户和提供给开发人员(包括异常触发类、程序执行过程出现的类、方法和行号,当然只列出配置包中的类,因为大部分异常信息涉及的类对我们来说没多大意义)两部分信息。

3 根据配置的异常处理级别调用相应的接口进行记录或提示,如写入日志文件、数据库、发邮件或短消息,最后弹出窗口提示错误信息(上面是显示给用户,下面显示给开发人员,默认隐藏)。

以上完全由程序自动捕获并处理,开发人员也可以干预处理过程,如设置异常级别和用户提示信息等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值