`
zean
  • 浏览: 19189 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

异常处理设计

阅读更多

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

 异常处理

 

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

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

分享到:
评论
6 楼 andy54321 2008-10-28  
设计很好;
前段时间自己也想过,比对之下,
想的太简单了,。。。。。
5 楼 zeelong2 2008-10-28  
LZ的设计还是不错的,呵。
4 楼 xiaoyu 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链(组合是可以随便配置的)
3 楼 zhoujj303030 2008-10-17  
学习,确实写得挺有思想的!
2 楼 bulargy 2008-10-17  
不错,最近正在设计异常处理,很有参考价值~~
1 楼 zzq230 2008-09-20  
log4j配合spring会很出色,很欣赏LZ的的设计

相关推荐

    Java异常处理终结篇——如何进行Java异常处理设计 - 望远的个人页面 - 开源中国社区1

    Java异常处理设计是Java编程中一个至关重要的环节,它直接影响到程序的稳定性和可维护性。在Java中,异常处理是通过try-catch-finally语句块来实现的,主要涉及两大类异常:编译时异常(Checked Exception)和运行时...

    一种基于ARM处理器的异常处理设计与实现.pdf

    异常处理设计中涉及了异常向量的概念,这是处理器在发生异常时转向执行的固定地址,也是编写异常处理程序的起点。ARM处理器共有七种异常类型,每种类型对应不同的异常向量地址,并在异常产生后切换至相应的异常中断...

    基于Java语言的异常处理设计源码演示

    本项目为Java语言编写的异常处理设计源码,总计包含32个文件,其中包括11个Java源代码文件、6个PNG图片文件以及相关的项目配置和文档文件。这些文件共同构成了一个完整的设计案例,旨在展示Java语言在异常处理方面的...

    Java异常处理和设计

    因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。若有不正之处,请多多谅解和指正,不胜感激。以下是本文的目录大纲:一.什么...

    异常处理的解决方案

    ### 异常处理的解决方案 #### 错误与异常处理概览 在软件开发中,错误和异常处理是一项至关重要...通过合理的异常处理设计,不仅可以避免程序崩溃,还可以为用户提供友好的错误提示,帮助他们更好地理解和解决问题。

    oracle笔记异常处理

    oracle笔记异常处理,异常处理的代码案例和知识点笔记!

    软件工程中的错误处理与异常处理.pptx

    - **异常处理设计模式**:使用策略模式、模板方法模式等设计模式来处理异常。 #### 第四章:错误处理与跨平台开发 **跨平台开发中的挑战** - **不同平台间的差异**:操作系统、硬件架构等方面的差异可能导致错误...

    异常处理.doc

    文章指出,避免异常处理设计中的常见错误至关重要。例如,不应为每个问题或每个包定义单独的异常类,这会导致异常类数量过多。也不应为每个异常提供checked和non-checked两种版本,因为这会增加处理异常的开销,且...

    java试验报告之异常处理程序设计

    **异常处理在Java编程中的重要性** 异常处理是Java编程中的关键组成部分,它允许程序员...通过这个实验,学生不仅学习了异常处理的基本原理,还掌握了如何设计和应用异常处理程序,这对于他们的Java编程生涯至关重要。

    异常处理的de设she计ji与yu重chong构gou

    在软件开发过程中,良好的异常处理设计与重构对于确保代码的健壮性、稳定性和可维护性至关重要。本文将深入探讨异常处理的设计原则、常见的异常模型、重构策略以及最佳实践。 首先,异常处理设计的核心目标是使程序...

    高效的java异常处理框架高效的java异常处理框架高效的java异常处理框架

    讲述 Java 异常处理的基本知识,分析 Java 异常体系结构,对比 Spring 的异常处理框架,阐述异常处理的基本原则,并提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常处理的框架来论述此思想。...

    易语言线程结构异常处理

    在易语言中,线程是并发执行的程序单位,线程结构异常处理是编程过程中非常重要的一环,因为线程可能会遇到各种异常情况,如内存访问错误、除零异常等。 线程结构异常处理源码是易语言中处理这些异常的关键部分。当...

    C异常处理(精).pdf

    5. **异常安全性**:良好的异常处理设计应确保即使在抛出异常的情况下,程序的状态也能保持一致,不会留下未释放的资源或无效的数据。在`MyExcepction`类的构造函数和析构函数中,都包含了输出信息的语句,这有助于...

    易语言HOOK异常处理

    "New_SE_Handler"可能是一个新的结构化异常处理程序,结构化异常处理(SEH)是Windows操作系统中的一个特性,用于处理硬件和软件异常。 "GetSeAddr"可能是获取异常发生时的地址函数,这对于分析异常原因和定位问题...

    Java面向对象程序设计 实验四 异常处理

    Java面向对象程序设计实验四 异常处理 Java面向对象程序设计实验四的主要目的是掌握异常处理的技术,了解自定义异常类与异常跟踪栈的概念。在这个实验中,我们将学习如何捕获并处理异常,并通过编写程序来验证...

    Java中的异常和处理详解共21页.pdf.zip

    8. **异常与程序设计**:良好的异常处理设计可以帮助提高程序的可读性和可维护性,通过合理抛出和处理异常,可以明确划分职责,让代码更加清晰。 9. **异常与单元测试**:在单元测试中,测试用例应该包括对异常的...

    易语言SEH异常处理

    在易语言中,SEH(Structured Exception Handling)异常处理机制是用于处理程序运行时可能出现的错误或异常情况的重要工具。本文将详细讲解易语言中的SEH异常处理,以及相关的关键技术点。 SEH是微软Windows操作...

    MFC程序设计详细实例 第28章 异常处理

    MFC程序设计详细实例 第28章 异常处理MFC程序设计详细实例 第28章 异常处理MFC程序设计详细实例 第28章 异常处理MFC程序设计详细实例 第28章 异常处理MFC程序设计详细实例 第28章 异常处理MFC程序设计详细实例 第28...

Global site tag (gtag.js) - Google Analytics