设计文档系统异常设计_第1页
设计文档系统异常设计_第2页
设计文档系统异常设计_第3页
设计文档系统异常设计_第4页
设计文档系统异常设计_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数银在线技术开发部文档系统异常设计标准版本V1.0Powered By王吉晨MSc certificated By British Computer SocietySenior Java & Java RTS DeveloperFormer NASA Scientist系统异常设计标准1简介本文档介绍了系统异常设计的标准,所有数银在线的系统异常设计今后均按照本文制定的标准实施。异常分为系统级和业务级,系统级异常面向系统维护和开发人员,业务级的异常面向系统的使用者, 即业务人员,一般要根据具体系统的业务规那么去定义。本文对系统级的异常做了定义,对业务级的异常做了实现模型的设计。1.1背景

2、当前所有数银系统中,对异常的定义及提示都是各成一套体系,对异常的捕捉及处理没有一个统一的标准。尤其是异常的命名,提示信息,抛出及处理的位置都非常混乱,导致系 统程序在出错后的维护非常不便,难以快速定位至出错的根源。业务级的异常对系统使用者的提示也不够友好和专业。1.2目标建立异常的定义,处理,提示机制的标准,使异常的处理能够统一管理,异常的提示信息可以通过配置实现,而非写死在系统代码中。异常类型的判断均在系统的效劳层进行,最终将结果返回给展现层, 展现层通过事先配置好的异常代码和提示消息的映射关系来显示对 应的提示消息。1.3定义和术语系统级异常:系统运行时的异常,如数据库连接失败,程序中的空

3、指针异常,效劳页面无法 找到等,通常无需系统使用者关注的问题,即因为程序出错而导致的问题。业务级异常:和业务逻辑相关的异常,即用户的操作导致了某个业务流程无法进行,造成业务数据错误时发生的异常,和系统本身的运行没有关系。1.4参考文档无2异常设计异常分为系统级和业务级, 本节将详细说明两种异常的定义,在系统程序中的实现, 给出了异常抛出,捕获和处理的流程机制。2.1系统级异常系统级异常指的是系统程序本身出现的错误,产生的异常,这类异常按级别也可以分为三个等级,如表2-1所示,列出了各种系统级异常的定义。系统异常级别异常定义异常实例程序级因程序代码编写错误而产生的,而此 类异常一般在系统上线前的

4、测试可以 检查出来空指针异常框架级系统程序代码调用一些第三方类库时 出现的错误,比方框架本身的错误线程数量耗尽底层系统操作系统相关的底层错误,一般是系 统底层出现了错误,如网络中断,和 程序本身无关。Broken pipe ,网络中断表2-1系统级异甬定乂系统级的异常在我们现有系统的分层结构中,会在各个层中出现,如图2-1所示各层异常出现的位置。对系统级的异常,系统将提供一个统一的提示信息如提示用户系统效劳不可用,并将详细地记录出错的程序堆栈信息,供开发人员进行错误修复。以业务逻辑层为界,所有在业务逻辑层内和业务层之后所发生的系统异常,均抛至业务逻辑层进行处理包括框架本身的异常,最终将结果传递

5、给展现层进行错误消息的提示。2.2业务级异常业务级异常的定义和处理必须结合实际的业务规那么进行定义,与系统程序本身以及底层系统无关,即在系统运行时,系统程序和底层程序没有出错,该错误是面向业务层面的,为 业务出错。Java异常分为两大类:checked异常和unChecked异常。所有继承java.lang.Exception的异常都属于checked异常。所有继承java.lang.RuntimeException的异常 都属于unChecked异常。业务级的异常一般可以定义为unChecked异常,即在运行时抛出的,根据业务层执行的结果,对照业务规那么来抛出业务的异常,然后通过一个统一的业

6、务异常处理来检查该业务异常的类型,最终提示给用户面向业务的错误信息。图2-2描述了业务级异常定义,处理的模型。图2-2业务级异常模型通过定义一个BusinessException集成RuntimeException来抽象所有的业务异常,让所有的业务层的效劳接口中的方法,均都抛出业务异常,最终由调用该业务接口的类去捕获并处-业务逻辑层数 据E久层图2-1各层的系统异常理该异常展现层调用那么提示错误消息,效劳层调用那么进行相关业务处理。举例说明,如在图中定义的用户不存在异常UserNotExistException可用于用户登录 时,查找比照用户信息,发现用户信息不正确那么抛出该异常。在调用该效劳

7、的展现层中捕获该异常并根据该异常的名称返回提示信息。2.3异常模型设计Java异常处理通过五个关键字来实现,try,catch,throw ,throws, finally。具体的异常处理结构由try -.catch .finajj来实现。try块存放可能出现异常的java语句,catch用来捕获发生的异常,并对异常进行处理。Finally块用来去除程序中未释放的资源。不管理try块的代码如何返回,finally块都总是被执行。Java给错误进行了统一的分类,通过扩展Exception类或其子类来实现。 从而防止了相同的错误可能在不同的方法中具有不同的错误信息。在不同的方法中出现相同的错误时,

8、只需要throw相同的异常对象即可。通过异常类,可以给异常更为详细,对用户更为有用的错误信息。以便于用户进行跟踪和调试程序。把正确的返回结果与错误信息别离。降低了程序的复杂度。调用者无需要对返回结果进行更多的了解。强制调用者进行异常处理,提高程序的质量。当一个方法声明需要抛出一个异常时,那么调用者必须使用try -.catch块对异常进行处理。当然调用者也可以让异常继续往上一层抛出。根据Java的这中特性,我们设计了一个异常抛出及处理的模型,如图2-3所示,今后所有系统开发中的异常设计均按照该模型的标准进行。总的原那么是所有业务级的异常均使用RuntimeException,即所有业务接口均抛

9、出该异常,所有系统级的异常在业务层中全部处理 掉并重新封装为一个统一的业务异常可提示系统错误,请联系开发人员,并将系统错误记录在后台日志,无需展现给系统使用者3标准说明如果一个异常是致命的,不可恢复的。或者调用者去捕获它没有任何益处,使用unChecked异常。如果一个异常是可以恢复的,可以被调用者正确处理的,使用checked异 常。在使用unChecked异常时,必须在在方法声明中详细的说明该方法可能会抛出的unChekced异常。由调用者自己去决定是否捕获unChecked异常到底什么时候使用checked异常,什么时候使用unChecked异常?并没有一个绝对的标 准。当所有调用者必须处理这个异常,可以让调用者进行重试操作;或者该异常相当于该方法的第二个返回值。使用checked异常。这个异常仅是少数比拟高级的调用者才能处理,一 般的调用者不能正确的处理。使unchecked异常。有能力处理的调用者可以进行高级处理,一般调用者干脆就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论