一种异常处理的方法、装置和软件系统的制作方法

文档序号:6331420阅读:191来源:国知局
专利名称:一种异常处理的方法、装置和软件系统的制作方法
技术领域
本发明属于计算机软件系统领域,尤其涉及一种异常处理的方法、装置和软件系统。
背景技术
异常是程序运行过程中出现的错误。传统的异常处理方式主要是程序员直接处理。这种方法含有多个异常处理语句,造成了代码的臃肿;异常处理分散在各个代码文件中间,针对同一类型异常,需要程序员在多个代码中书写或拷贝,极易出现不一致的处理;同一类型的错误有不同的表示,这导致处理的复杂化;一个项目中各层对异常处理的方式不同,不同的层编写不同的代码,会造成代码使用麻烦以及复用性低的问题,此时若需修改, 可能改动较大。

发明内容
本发明实施例的目的在于提供一种简单、便捷的异常处理方法,旨在解决异常处理代码分散、繁琐,处理复杂,复用性低的问题。本发明实施例是这样实现的,一种异常处理方法,其特征在于,所述方法包括以下步骤对异常进行标注,标注出处理此异常所需的异常处理接口 ;系统抛出异常后,统一捕捉进行过异常标注的异常;根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系;调用异常处理接口处理异常。本发明实施例的另一目的在于提供一种简单、便捷的异常处理装置,所述装置包括异常标注单元,标注出处理各类异常所需的对应异常处理接口 ;异常捕捉单元,捕捉异常标注单元标注了的异常信息;异常配置单元,根据异常标注单元中标注的异常处理接口,保存异常和异常处理接口的对应关系再决定调用处理异常捕捉单元捕捉的异常所需的异常处理接口;异常处理单元,调用异常配置单元所决定的异常处理接口处理异常。在本发明实施例中,统一异常集中处理的方法,将多种类型异常的处理集中起来, 解决了程序员每出现一次异常都要单独写一次处理方法的问题,实现了对同类型异常的相同处理,大大减少了程序员的工作量和出错的机会,精简了程序代码,提高了产品质量。且可用于项目中各层,使得代码的复用性高,能够在不同环境对异常进行处理,不必每次为不同的应用编写代码。


图1是本发明第一实施例提供的异常处理方法实现流程图;图2是本发明提供的类的示意图;图3是本发明第二实施例提供的异常处理方法实现流程图;图4是本发明第三实施例提供的异常处理方法实现流程图;图5是本发明实施例提供的异常处理装置的结构框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。 本发明实施例,首先进行异常标注,标注出处理此异常的异常处理接口。在系统抛出异常后捕捉标注了的异常,然后读取异常堆栈中的类及其父类,查找其异常标注,根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系。最后,调用对应的异常处理接口处理异常。本发明实施例提供了一种异常处理的方法、装置所述方法包括对异常进行标注,标注出处理此异常所需的异常处理接口 ;系统抛出异常后,统一捕捉进行过异常标注的异常;根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系;调用异常处理接口处理异常。所述装置包括异常标注单元,标注出处理各类异常所需的对应异常处理接口 ;异常捕捉单元,捕捉异常标注单元标注了的异常信息;异常配置单元,根据异常标注单元中标注的异常处理接口,保存异常和异常处理接口的对应关系再决定调用处理异常捕捉单元捕捉的异常所需的异常处理接口;异常处理单元,调用异常配置单元所决定的异常处理接口处理异常。为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。实施例一图1示出了本发明第一实施例提供的异常处理的实现流程,详述如下在本发明实施例中,首先需要解释贯穿本发明实施例的异常处理接口类。其一为程序员根据自己需要解决的异常类型自定义的异常处理接口 Handler。另一为本发明实施例中用于处理常见异常的默认异常处理接口 DefaultHandler (如图2所示)。在步骤SlOl中,对异常进行标注,标注出处理此异常所需的异常处理接口。在本发明实施例中,异常标注是指通过异常标注类Exc印tionHandler,用 Java自带的标注函数标明处理异常的异常处理接口 Handler或者默认异常处理接口 DefaultHandler0异常有类级别和方法级别两种。在进行异常标注的时候,既可以是对类进行异常标注,也可以是对方法进行标注。具体标注方式如下若是类级别,则为
OExceptionHandlerpublic class Test{}若是方法级别,则为 ExceptionHandler(handler = RestHandler. class)public void methodA () throws RestException {}由上可知,对异常类进行异常标注,则这个类中的所有方法均不必再单独进行异常标注,默认使用此类标注的异常处理接口进行处理。对异常方法进行异常标注,则需要对每个方法单独标注异常处理接口。在步骤S102中,系统抛出异常后,统一捕捉进行过异常标注的异常。在本发明实施例中,统一捕捉的异常仅限于标注了的异常。用异常捕捉工具类 HandlerUtil 实现。。其实现方法如下try {//some code here} catch(XxxException e){HandlerUti1. handle(e,RestException. class) ;}如上所示,try运行可能发生异常的代码后,使用异常捕捉工具类HandlerUtil来捕捉异常。在步骤S103中,判断是否存在异常与异常处理接口的对应关系,是则直接执行步骤S105,否则先执行步骤S104,然后执行步骤S105 ;在本发明实施例中,先读取异常堆栈中的类及其父类,查找其异常标注。然后通过查找到的异常标注得知处理此异常需要的异常处理接口后,将此异常与该异常处理接口的对应关系存储在列表中,此过程称为异常配置。在本发明实施例中,由于在异常的类型相同的情况下,如果每次处理这类异常前都要配置一次则太过繁琐。因此,配置的时候会在某类异常第一次出现时进行配置,配置完成后记录下异常与异常处理接口的对应关系,这样下次再出现这类异常的时候就可直接通过读取异常与异常处理接口的对应关系找到对应的异常处理接口,不需要再重新配置一次了。这时,就要先判断异常是否已经进行过配置了,即是否存在异常与异常处理接口的对应关系。在步骤S104中,根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系。在本发明实施例中,以下步骤需要使用到3个类。如图2所示,类 HandlerContextPopulato及类HandlerContext都为异常配置类。异常配置类 HandlerContext用于存储和读取异常与异常处理接口的对应关系。异常配置类 HandlerContextPopulator用于读取异常堆栈中的类及其父类,查找其异常标注。 HandlerHelper为异常助手类,决定调用哪个异常处理接口 Handler或默认异常处理接口 DefaultHandler 处理异常。在本发明实施例中,对于没有配置过的异常,要先进行异常配置。使用类 HandlerContextPopulator读取异常堆栈中的类及其父类,查找其异常标注。找到异常标注后,读取异常标注类Exc印tionHandler。然后使用类HandlerContext根据异常标注的异常处理接口,将异常与异常处理接口的对应关系存储在列表中。在步骤S105中,通过读取异常与异常处理接口的对应关系,决定调用哪个异常处理接口处理异常。在本发明实施例中,对于已经配置过的异常,使用异常配置类HandlerContext读取异常与异常处理接口的对应关系。然后使用异常助手类Handlerifelper决定调用哪个异常处理接口处理异常。在步骤S106中,调用对应的异常处理接口处理异常。在本发明实施例中,调用上述所决定的异常处理接口 Handler或者默认异常处理接口 DefaultHandler 处理异常。本发明实施例中,这种统一处理异常的方式,精简了程序代码,提高了产品质量, 同时解决了程序员每出现一次异常都要单独写一次处理代码的问题,实现了对同类型异常的相同处理。且代码的复用性高,能够在不同环境对异常进行处理。实施例二 图3示出了本发明第二实施例提供的异常处理的实现流程,详述如下在步骤S301中,对异常进行标注,标注出处理此异常所需的异常处理接口 ;在步骤S302中,系统抛出异常后,统一捕捉进行过异常标注的异常;在步骤S303中,判断是否存在异常与异常处理接口的对应关系,是则直接执行步骤S305,否则先执行步骤S304,然后执行步骤S305 ;在步骤S304中,根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系;在步骤S305中,通过读取异常与异常处理接口的对应关系,决定调用哪个异常处理接口处理异常;在步骤S306中,调用对应的异常处理接口处理异常,并记录异常日志。在本发明实施例中,不论是使用异常处理接口 Handler还是使用默认异常处理接口 DefaultHandler处理异常,均可记录异常日志。根据所需,可设置异常日志记录诸如异常发生时间,原因,类型等信息。在本发明实施例中,异常日志信息的统一记录使得开发人员对BUG异常定位准确,减少查找BUG产生原因的时间。并且此统一管理异常日志信息的方法,可以由负责人来进行错误信息的单独整理,改善用户体验。实施例三图4示出了本发明第三实施例提供的异常处理的实现流程,详述如下在步骤S401中,对异常进行标注,标注出处理此异常所需的异常处理接口 ;在步骤S402中,系统抛出异常后,统一捕捉进行过异常标注的异常;在步骤S403中,判断是否存在异常与异常处理接口的对应关系,是则直接执行步骤S305,否则先执行步骤S304,然后执行步骤S305 ;在步骤S404中,根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系;在步骤S405中,通过读取异常与异常处理接口的对应关系,决定调用哪个异常处理接口处理异常;在步骤S406中,调用对应的异常处理接口处理异常;在步骤S407中,根据系统所需转换异常并抛出。在本发明实施例中,根据系统的需要,可能在处理完某些异常后需要将其转换为指定的异常。即使用异常转换工具Throwables (如图2所示)将异常转换为指定异常并继续抛出。异常转换方法如下所示public Throwable handle (ThrowabIe throwable, Object. . . params) {return new RuntimeException (throwable) ;}由上可知,转换后返回一个新的指定异常。在转换异常时,需要把原异常传入构造参数,记录异常原因。实施例四图5为本发明实施例提供的异常处理装置的结构示意,为了便于说明,仅示出了与本发明实施例相关的部分,该异常处理装置可以是内置于软件系统中的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到软件系统中或者运行于软件系统中,其中该装置包括异常标注单元1、异常捕捉单元2、异常配置单元3和异常处理单元4。异常标注单元1,使用异常标注类Exc印tionHandler标注出处理各类异常所需的对应异常处理接口。异常捕捉单元2,使用异常捕捉工具类HandlerUtil捕捉异常标注单元标注了的异吊fn息。异常配置单元3,使用异常配置类HandlerContextPopulator来读取异常堆栈中的类及其父类后,使用异常标注单元中的异常标注类Exc印tionHandler查找其异常标注。 再用异常配置类HandlerContext保存异常和异常处理接口的对应关系并用异常助手类 HandlerHelper决定调用处理异常所需的异常处理接口。异常处理单元4,调用异常配置单元所决定的异常处理接口 Handler或默认异常处理接口 DefaultHandler处理异常,并根据所需转换异常、记录异常日志。在本发明实施例中,统一异常集中处理的方法,将多种类型异常的处理集中起来, 解决了程序员每出现一次异常都要单独写一次处理方法的问题,实现了对同类型异常的相同处理,大大减少了程序员工作量和出错的机会,精简了程序代码,提高了产品质量。且可用于项目中各层,使得代码的复用性高,能够在不同环境对异常进行处理,不必每次为不同的应用编写代码。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种异常的处理方法,其特征在于,所述方法包括以下步骤 对异常进行标注,标注出处理此异常所需的异常处理接口 ;系统抛出异常后,统一捕捉进行过异常标注的异常;根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系; 调用异常处理接口处理异常。
2.如权利要求1所述的方法,其特征在于,所述的异常标注是指用标注函数实现对异常类的标注或者对异常方法的标注。
3.如权利要求1所述的方法,其特征在于,所述方法进一步包括下述步骤 调用对应的异常处理接口处理异常的同时记录异常日志。
4.如权利要求1所述的方法,其特征在于,所述方法进一步包括下述步骤 处理完异常后根据系统所需将异常转换为指定异常。
5.如权利要求1所述的方法,其特征在于,所述根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系的具体步骤为通过读取异常堆栈中的类及其父类来查找异常处理标注; 找到异常和异常处理接口的对应关系后,存储此对应关系; 根据此对应关系决定调用对应的异常处理接口。
6.如权利要求1至5任一项所述的方法,其特征在于,所述根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系进一步包括先判断是否存在异常与异常处理接口的对应关系; 若存在则直接根据此对应关系决定调用对应的异常处理接口 ; 若不存在此对应关系则根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系。
7.一种异常处理装置,其特征在于,所述装置包括异常标注单元,标注出处理各类异常所需的对应异常处理接口 ; 异常捕捉单元,捕捉异常标注单元标注了的异常信息;异常配置单元,根据异常标注单元中标注的异常处理接口,保存异常和异常处理接口的对应关系再根据此对应关系决定调用处理异常捕捉单元捕捉的异常所需的异常处理接 Π ;异常处理单元,调用异常配置单元所决定的异常处理接口处理异常。
8.如权利要求7所述的装置,其特征在于,所述的异常处理单元还能根据所需转换异常、记录异常日志。
9.一种软件系统,其特征在于,所述系统包括权利要求7或8任一权利要求所述的异常处理装置。
全文摘要
本发明属于计算机软件系统领域,提供了一种异常处理的方法、装置和软件系统。该方法包括下述步骤对异常进行标注,标注出其对应的异常处理接口;系统抛出异常后,统一捕捉进行过异常标注的异常;根据异常标注找到对应的异常处理接口并存储异常和异常处理接口的对应关系;调用异常处理接口处理异常。本发明实施例统一集中处理异常的方法,大大减少了程序员工作量和出错的机会,精简了程序代码,提高了产品质量。也解决了程序员每出现一次异常都要单独写一次处理代码的问题,实现了对同类型异常的相同处理。且代码的复用性高,能够在不同环境对异常进行处理。
文档编号G06F9/44GK102385508SQ20101027202
公开日2012年3月21日 申请日期2010年9月3日 优先权日2010年9月3日
发明者曾功立 申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1