浏览 5657 次
锁定老帖子 主题:异常处理设计
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-20
前段时间设计了一个异常处理,效果还可以,但还不是很满意, 不知道别人的异常处理是个什么样子,贴出来跟大家讨论一下。先看类图:
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 根据配置的异常处理级别调用相应的接口进行记录或提示,如写入日志文件、数据库、发邮件或短消息,最后弹出窗口提示错误信息(上面是显示给用户,下面显示给开发人员,默认隐藏)。 以上完全由程序自动捕获并处理,开发人员也可以干预处理过程,如设置异常级别和用户提示信息等。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-20
log4j配合spring会很出色,很欣赏LZ的的设计
|
|
返回顶楼 | |
发表时间:2008-10-17
不错,最近正在设计异常处理,很有参考价值~~
|
|
返回顶楼 | |
发表时间:2008-10-17
学习,确实写得挺有思想的!
|
|
返回顶楼 | |
发表时间:2008-10-17
没有扩展性, 应该可以扩展exception的处理。 我一般是类似J2EE的Web Filter的处理方式:
ExceptionHandler --> ExceptionProcessChain --> ExceptionProcessor ExceptionProcessor实现类的为代码: doProcess(Throwable e, ExceptionProcessChain chain) { //do xxxxxx. chain.doProcess(e); //调用下一个处理方法 } ExceptionProcessor的实现类可以有日志, 通知, 不同的等级, 不同的类型异常等 ExceptionHandler 的实现类可以有aop, filter, 普通的代理等形式。 一个Handler会有一个Chain链(组合是可以随便配置的) |
|
返回顶楼 | |
发表时间:2008-10-28
LZ的设计还是不错的,呵。
|
|
返回顶楼 | |
发表时间:2008-10-28
设计很好;
前段时间自己也想过,比对之下, 想的太简单了,。。。。。 |
|
返回顶楼 | |