异常处理方法、装置、计算机设备以及存储介质与流程

文档序号:16930183发布日期:2019-02-22 20:12阅读:138来源:国知局
异常处理方法、装置、计算机设备以及存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种异常处理方法、装置、计算机设备以及存储介质。



背景技术:

现有技术中,对于系统的异常没有一个完整、合理的响应机制,一方面,当系统的异常出现时,如果通过人工针对每个异常都对应地编写程序代码进行异常处理,通常会花费大量的人力和物力,造成人力和物力的浪费;另一方面,针对各种异常无法做到统一响应、统一处理;随着技术的不断革新,业务量的不断增长,现有的异常响应机制已经不能满足当下的业务需求与发展。



技术实现要素:

有鉴于此,本发明实施例提供一种异常处理方法、装置、计算机设备以及存储介质,可以实现对异常的捕获,并对所捕获的异常进行统一处理。

一方面,本发明实施例提供了一种异常处理方法,该方法包括:

若检测到系统抛出异常时,捕获系统所抛出的异常;

根据所捕获的异常确定所述异常对应的异常类型;

根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装;

若接收到用户端的获取指令,将已封装的异常发送给用户端,所述用户端收到已封装的异常后对该异常进行解封;

根据解封后得到的信息调用对应的策略实现异常处理。

另一方面,本发明实施例提供了一种异常处理装置,所述装置包括:

捕获单元,用于若检测到系统抛出异常时,捕获系统所抛出的异常;

确定单元,用于根据所捕获的异常确定所述异常对应的异常类型;

封装单元,用于根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装;

解封单元,用于若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端;

处理单元,用于根据解封后得到的信息调用对应的策略实现异常处理。

又一方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的异常处理方法。

再一方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现如上所述的异常处理方法。

本发明实施例提供一种异常处理方法、装置、计算机设备以及存储介质,其中方法包括:若检测到系统抛出异常时,捕获系统所抛出的异常;根据所捕获的异常确定所述异常对应的异常类型;根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装;若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端;根据解封后得到的信息调用对应的策略实现异常处理。本发明实施例可以实现对异常的捕获,并对所捕获的异常进行统一处理。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种异常处理方法的示意流程图;

图2是本发明实施例提供的一种异常处理方法的另一示意流程图;

图3是本发明实施例提供的一种异常处理方法的另一示意流程图;

图4是本发明另一实施例提供的一种异常处理方法的示意流程图;

图5是本发明实施例提供的一种异常处理装置的示意性框图;

图6是本发明实施例提供的一种异常处理装置的另一示意性框图;

图7是本发明实施例提供的一种异常处理装置的另一示意性框图;

图8是本发明实施例提供的一种异常处理装置的另一示意性框图;

图9是本发明实施例提供的一种异常处理装置的另一示意性框图;

图10是本发明实施例提供的一种计算机设备的结构组成示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

请参阅图1,图1为本发明实施例提供的一种异常处理方法的示意流程图。该方法可以运行在智能手机(如android手机、ios手机等)、平板电脑、笔记本电脑以及智能设备等终端中。如图1所示,该方法包括步骤s101~s104。

s101,若检测到系统抛出异常时,捕获系统所抛出的异常。

在本发明实施例中,针对可能发生异常的代码位置,通过设置异常抛出的代码块对该异常进行捕获,所述异常包括系统异常以及业务异常,其中,系统异常可以是运行异常、溢出异常和空指针异常等等,业务异常可以根据具体的业务场景进行定义,例如,信用卡识别失败、还款信息异常和用户名错误异常等等,具体的业务异常由具体业务场景决定,在此不作限制。

优选的,所述步骤s101具体包括以下步骤:若检测到系统抛出异常时,在所述异常对应的代码中部署try-catch-finally代码块对系统所抛出的异常进行捕获。具体的,当系统抛出异常后,对该异常进行捕获,具体地,针对可能发生异常的位置,使用try-catch-finally块并定义相关程序代码捕获异常,其中,try块中包含可能出现异常的代码语句,catch块负责对try块中出现的异常进行捕获,finally块负责执行用户自定义的其他执行语句(例如将所捕获的异常发送给调用方等等),其中,try块中出的异常可能是多个异常,针对多个不同的异常,需要设置多个catch块进行捕获。

s102,根据所捕获的异常确定所述异常对应的异常类型。

在本发明实施例中,所述异常类型包括系统异常以及业务异常,对于所捕获的异常如运行异常、溢出异常和空指针异常等等作为系统所发生的异常,对于所捕获的异常如信用卡识别失败、还款信息异常和用户名错误异常等具体业务场景的异常作为业务异常。

s103,根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装。

在本发明实施例中,所述异常编码可以是数字编码(例如,401、402和403等等),所述异常简介信息可以是针对该异常的简要介绍信息(例如,若异常为用户名错误,该异常简介信息为“用户名错误”,若异常为信用卡识别失败,该异常简介信息为“信用卡识别失败”等等),具体的,不同的异常类型对应不同的异常编码,不同的异常类型对应不同的异常简介信息。

进一步地,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装,如图2所示,对所述异常进行封装的步骤包括步骤s202~204。

s202,创建自定义封装函数,并在所述自定义封装函数创建自定义字典,并将所使用的异常编码和异常简介信息作为所述自定义字典的字典元素。

具体的,所述自定义封装函数如fx()函数,在自定义封装函数中创建的自定义字典如dic(code,message)字典,其中,dic(code,message)字典中的字典元素code表示异常编码,message表示异常简要介绍信息。

s204,通过所创建的自定义封装函数以及所述自定义字典对所述异常进行封装。

具体的,可以将所自定义封装函数fx()命名为fx(dic(code,message),data),其中dic(code,message)为所自定义的字典,data表示异常的响应数据,使用该自定义封装函数对异常进行封装的方法为:当所捕获的异常为用户名密码错误时,字典中的code设置为401,message设置为“用户名密码错误”,异常的响应数据为errot_login_failed,即完成对所述异常的封装。

s104,若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端。

在本发明实施例中,通过识别所获取的已封装的异常的封装格式,通过调用(如本地调用)或者加载并调用相应的预设解封装函数,并解封所述异常,从而获取所述已封装的异常在解封后的异常编码以及异常简要介绍信息,例如,对于异常a中已有对应的异常编码(如401)和异常简要介绍信息(如“用户名密码错误”),通过识别出的封装格式由本地调用(或者加载并调用,如果异常a中已经存储该解封装函数)该解封装函数,从而解封装异常a并获取异常编码为401,异常简要介绍信息为“用户名密码错误”。

需要说明的是,该预设解封装函数可以由用户自行定义,也可以使用系统默认的调用函数,例如,异常的调用函数exceptionsort(),在该调用函数中传入所要获取的异常参数,该异常参数可以为异常名称、异常标识或者异常位置信息等等。当通过调用函数获取异常后,将得到异常对应的异常编码和异常简介信息。通过对异常详情的提示,实现对异常的统一处理。

s105,根据解封后得到的信息调用对应的策略实现异常处理。

在本发明实施例中,在调用不同的策略实现异常处理之前,需要预设配置异常的策略配置文件,在预设配置的策略配置文件中针对各种异常编码对应地设置有处理程序,该处理程序为异常处理的程序代码,具体的,预设的策略配置文件为预设的策略配置列表,针对不同的异常编码和异常简介信息,在预设的策略配置列表中记录不同的处理程序以供用户调用对应的策略实现异常处理,例如,可以针对不同的异常编码设置不同的处理程序,或者针对不同的异常简要介绍信息设置不同的处理程序。如表1、表2所示:

表1

表2

其中,在表1中,针对不同的异常编码设置不同的处理程序,也就是说,若对异常解封后,得到的信息为异常编码,可以根据具体的异常编码调用对应的处理程序实现异常处理;在表2中,针对不同的异常简介信息设置不同的处理程序,也就是说,若对异常解封后,得到的信息为异常简介信息,可以根据具体的异常简介信息调用对应的处理程序实现异常处理。

进一步地,如图3所示,所述步骤s105包括步骤s302~s306。

s302,将解封后所得到的异常编码或者异常简介信息传入预先配置的策略配置文件。

s304,从预先配置的策略配置文件中获取与异常编码或者异常简介信息相对应的处理程序列表。

s306,根据所获取的处理程序列表,调用对应的处理程序对异常进行处理。

由以上可见,本发明实施例通过若检测到系统抛出异常时,捕获系统所抛出的异常;根据所捕获的异常确定所述异常对应的异常类型;根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装;若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端;根据解封后得到的信息调用对应的策略实现异常处理。本发明实施例可以实现对异常的捕获,并对所捕获的异常进行统一处理。

请参阅图4,图4为本发明另一实施例提供的一种异常处理方法的示意流程图。该方法可以运行在智能手机(如android手机、ios手机等)、平板电脑、笔记本电脑以及智能设备等终端中。如图4所示,该方法包括步骤s401~s406。

s401,使用预设声明语句将系统中所产生的异常抛出。

在本发明实施例中,所述预设声明语句包括throw声明语句、throws声明语句,其中,对于throw声明语句,可以对逻辑代码中的函数体内/方法体内的异常对象进行声明,例如:a函数()throwsioexception{},表示函数声明抛出一个ioexception异常;对于throws声明语句,可以对逻辑代码中的函数体/方法体前的异常声明,当函数体/方法体产生异常时,通过throws的声明将函数体/方法体所产生的异常抛出。

s402,若检测到系统抛出异常时,捕获系统所抛出的异常。

在本发明实施例中,针对可能发生异常的代码位置,通过设置异常抛出的代码块对该异常进行捕获,所述异常包括系统异常以及业务异常,其中,系统异常可以是运行异常、溢出异常和空指针异常等等,业务异常可以根据具体的业务场景进行定义,例如,信用卡识别失败、还款信息异常和用户名错误异常等等,具体的业务异常由具体业务场景决定,在此不作限制。

s403,根据所捕获的异常确定所述异常对应的异常类型。

在本发明实施例中,所述异常类型包括系统异常以及业务异常,对于所捕获的异常如运行异常、溢出异常和空指针异常等等作为系统所发生的异常,对于所捕获的异常如信用卡识别失败、还款信息异常和用户名错误异常等具体业务场景的异常作为业务异常。

s404,根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装。

在本发明实施例中,所述异常编码可以是数字编码(例如,401、402和403等等),所述异常简介信息可以是针对该异常的简要介绍信息(例如,若异常为用户名错误,该异常简介信息为“用户名错误”,若异常为信用卡识别失败,该异常简介信息为“信用卡识别失败”等等),具体的,不同的异常类型对应不同的异常编码,不同的异常类型对应不同的异常简介信息。

s405,若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端。

在本发明实施例中,通过识别所获取的已封装的异常的封装格式,通过调用(如本地调用)或者加载并调用相应的预设解封装函数,并解封所述异常,从而获取所述已封装的异常在解封后的异常编码以及异常简要介绍信息,例如,对于异常a中已有对应的异常编码(如401)和异常简要介绍信息(如“用户名密码错误”),通过识别出的封装格式由本地调用(或者加载并调用,如果异常a中已经存储该解封装函数)该解封装函数,从而解封装异常a并获取异常编码为401,异常简要介绍信息为“用户名密码错误”。

需要说明的是,该预设解封装函数可以由用户自行定义,也可以使用系统默认的调用函数,例如,异常的调用函数exceptionsort(),在该调用函数中传入所要获取的异常参数,该异常参数可以为异常名称、异常标识或者异常位置信息等等。当通过调用函数获取异常后,将得到异常对应的异常编码和异常简介信息。通过对异常详情的提示,实现对异常的统一处理。

s406,根据解封后得到的信息调用对应的策略实现异常处理。

在本发明实施例中,在调用不同的策略实现异常处理之前,需要预设配置异常的策略配置文件,在预设配置的策略配置文件中针对各种异常编码对应地设置有处理程序,该处理程序为异常处理的程序代码,具体的,预设的策略配置文件为预设的策略配置列表,针对不同的异常编码和异常简介信息,在预设的策略配置列表中记录不同的处理程序以供用户调用对应的策略实现异常处理,例如,可以针对不同的异常编码设置不同的处理程序,或者针对不同的异常简要介绍信息设置不同的处理程序。如表3、表4所示:

表3

表4

其中,在表3中,针对不同的异常编码设置不同的处理程序,也就是说,若对异常解封后,得到的信息为异常编码,可以根据具体的异常编码调用对应的处理程序实现异常处理;在表4中,针对不同的异常简介信息设置不同的处理程序,也就是说,若对异常解封后,得到的信息为异常简介信息,可以根据具体的异常简介信息调用对应的处理程序实现异常处理。

请参阅图5,对应上述一种异常处理方法,本发明实施例还提出一种异常处理装置,该装置100包括:捕获单元101、确定单元102、封装单元103、解封单元104、处理单元105。

其中,所述捕获单元101,用于若检测到系统抛出异常时,捕获系统所抛出的异常。

确定单元102,用于根据所捕获的异常确定所述异常对应的异常类型。

封装单元103,用于根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装。

解封单元104,用于若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端。

处理单元105,用于根据解封后得到的信息调用对应的策略实现异常处理。

由以上可见,本发明实施例通过若检测到系统抛出异常时,捕获系统所抛出的异常;根据所捕获的异常确定所述异常对应的异常类型;根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装;若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端;根据解封后得到的信息调用对应的策略实现异常处理。本发明实施例可以实现对异常的捕获,并对所捕获的异常进行统一处理。

请参阅图6,所述捕获单元101,包括:

捕获子单元101a,用于若检测到系统抛出异常时,在所述异常对应的代码中部署try-catch-finally代码块对系统所抛出的异常进行捕获。

请参阅图7,所述封装单元103,包括:

创建单元103a,用于创建自定义封装函数,并在所述自定义封装函数创建自定义字典,并将所使用的异常编码和异常简介信息作为所述自定义字典的字典元素。

封装子单元103b,用于通过所创建的自定义封装函数以及所述自定义字典对所述异常进行封装。

请参阅图8,所述处理单元105,包括:

传入单元105a,将解封后所得到的异常编码或者异常简介信息传入预先配置的策略配置文件。

获取单元105b,用于从预先配置的策略配置文件中获取与异常编码或者异常简介信息相对应的处理程序列表。

处理子单元105c,用于根据所获取的处理程序列表,调用对应的处理程序对异常进行处理。

请参阅图9,对应上述一种异常处理方法,本发明实施例还提出一种异常处理装置,该装置200包括:异常抛出单元201、捕获单元202、确定单元203、封装单元204、解封单元205、处理单元206。

异常抛出单元201,用于使用预设声明语句将系统中所产生的异常抛出。

捕获单元202,若检测到系统抛出异常时,捕获系统所抛出的异常。

确定单元203,根据所捕获的异常确定所述异常对应的异常类型。

封装单元204,根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装。

解封单元205,若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端。

处理单元206,根据解封后得到的信息调用对应的策略实现异常处理。

上述异常处理装置与上述异常处理方法一一对应,其具体的原理和过程与上述实施例所述方法相同,不再赘述。

上述异常处理装置可以实现为一种计算机程序的形式,计算机程序可以在如图10所示的计算机设备上运行。

图10为本发明一种计算机设备的结构组成示意图。该设备可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式装置等具有通信功能的电子装置。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。参照图10,该计算机设备500包括通过系统总线501连接的处理器502、非易失性存储介质503、内存储器504和网络接口505。其中,该计算机设备500的非易失性存储介质503可存储操作系统5031和计算机程序5032,该计算机程序5032被执行时,可使得处理器502执行一种异常处理方法。该计算机设备500的处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序被处理器执行时,可使得处理器502执行一种异常处理方法。计算机设备500的网络接口505用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器502执行所述计算机程序时实现如下操作:

若检测到系统抛出异常时,捕获系统所抛出的异常;

根据所捕获的异常确定所述异常对应的异常类型;

根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装;

若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端;

根据解封后得到的信息调用对应的策略实现异常处理。

在一个实施例中,所述处理器502执行所述计算机程序时还实现如下操作:

使用预设声明语句将系统中所产生的异常抛出。

在一个实施例中,所述若检测到系统抛出异常时,捕获系统所抛出的异常,包括:

若检测到系统抛出异常时,在所述异常对应的代码中部署try-catch-finally代码块对系统所抛出的异常进行捕获。

在一个实施例中,所述根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装,包括:

创建自定义封装函数,并在所述自定义封装函数创建自定义字典,并将所使用的异常编码和异常简介信息作为所述自定义字典的字典元素;

通过所创建的自定义封装函数以及所述自定义字典对所述异常进行封装。

在一个实施例中,所述根据解封后得到的信息调用对应的策略实现异常处理,包括:

将解封后所得到的异常编码或者异常简介信息传入预先配置的策略配置文件;

从预先配置的策略配置文件中获取与异常编码或者异常简介信息相对应的处理程序列表;

根据所获取的处理程序列表,调用对应的处理程序对异常进行处理。

本领域技术人员可以理解,图10中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图10所示实施例一致,在此不再赘述。

本发明提供了一种计算机可读存储介质,计算机可读存储介质存储有一个或者一个以上计算机程序,所述一个或者一个以上计算机程序可被一个或者一个以上的处理器执行,以实现以下步骤:

若检测到系统抛出异常时,捕获系统所抛出的异常;

根据所捕获的异常确定所述异常对应的异常类型;

根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装;

若接收到用户端的获取指令,对该异常进行解封并将解封后的异常发送给用户端;

根据解封后得到的信息调用对应的策略实现异常处理。

在一个实施例中,所述一个或者一个以上计算机程序可被一个或者一个以上的处理器执行,还实现以下步骤:

使用预设声明语句将系统中所产生的异常抛出。

在一个实施例中,所述若检测到系统抛出异常时,捕获系统所抛出的异常,包括:

若检测到系统抛出异常时,在所述异常对应的代码中部署try-catch-finally代码块对系统所抛出的异常进行捕获。

在一个实施例中,所述根据所确定的异常类型,使用所述异常类型对应的异常编码和异常简介信息对所述异常进行封装,包括:

创建自定义封装函数,并在所述自定义封装函数创建自定义字典,并将所使用的异常编码和异常简介信息作为所述自定义字典的字典元素;

通过所创建的自定义封装函数以及所述自定义字典对所述异常进行封装。

在一个实施例中,所述根据解封后得到的信息调用对应的策略实现异常处理,包括:

将解封后所得到的异常编码或者异常简介信息传入预先配置的策略配置文件;

从预先配置的策略配置文件中获取与异常编码或者异常简介信息相对应的处理程序列表;

根据所获取的处理程序列表,调用对应的处理程序对异常进行处理。

本发明前述的存储介质包括:磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等各种可以存储程序代码的介质。

本发明所有实施例中的单元可以通过通用集成电路,例如cpu(centralprocessingunit,中央处理器),或通过asic(applicationspecificintegratedcircuit,专用集成电路)来实现。

本发明实施例异常处理方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本发明实施例异常处理装置中的单元可以根据实际需要进行合并、划分和删减。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1