著录项信息
专利名称 | 异常处理的方法及装置 |
申请号 | CN201010267778.0 | 申请日期 | 2010-08-30 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2011-01-05 | 公开/公告号 | CN101937372A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/00 | IPC分类号 | G;0;6;F;1;1;/;0;0;;;G;0;6;F;9;/;4;4查看分类表>
|
申请人 | 北京数码大方科技有限公司 | 申请人地址 | 北京市海淀区知春路甲63号卫星大厦802室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京数码大方科技股份有限公司 | 当前权利人 | 北京数码大方科技股份有限公司 |
发明人 | 吴玲;付德平;李海峰 |
代理机构 | 北京康信知识产权代理有限责任公司 | 代理人 | 吴贵明 |
摘要
本发明公开了一种异常处理的方法及装置,其中,该方法包括:检测到指令中的一个或多个异常状态;在指令异常状态列表中查找异常状态对应的属性信息,指令异常状态列表保存各个异常状态的属性信息;显示异常状态对应的属性信息。通过本发明,能够快速准确地定位到发生异常的地点,提高异常处理的正确性和处理效率,便于软件代码维护,提高用户的易用性和软件健壮性。
1.一种异常处理的方法,其特征在于,包括:
检测到指令中的一个或多个异常状态;
在指令异常状态列表中查找所述异常状态对应的属性信息,所述指令异常状态列表保存各个所述异常状态的所述属性信息;
显示所述异常状态对应的所述属性信息;
其中,在指令异常状态列表中查找所述异常状态对应的属性信息之后,所述方法还包括:获取所述异常状态的异常类型或者异常等级;根据所述异常类型或者所述异常等级对所述异常状态进行相应的异常处理,且根据多个属性信息中的异常类型确定当前异常状态的层;
根据所述异常类型或者所述异常等级对所述异常状态进行相应的异常处理的步骤包括:
比较所述异常等级是否在预定等级的范围内,其中,
当所述异常等级在所述预定等级的范围之内时,逐层返回到该异常等级对应的所述异常状态进行所述异常处理,并显示所述异常状态对应的所述属性信息;
当所述异常等级在所述预定等级的范围之外时,在预定时间内对该异常等级对应的异常状态进行所述异常处理,该异常状态的属性信息在后台添加。
2.根据权利要求1所述的方法,其特征在于,所述属性信息包括:
异常编号、异常类型、异常等级、异常消息和异常解决方案。
3.根据权利要求1所述的方法,其特征在于,在显示所述异常状态对应的所述属性信息之前,所述方法还包括:通过传输接口在日志文件中记录该异常状态的所述属性信息。
4.根据权利要求1或3所述的方法,其特征在于,提供一个用户界面读取并显示所述异常状态对应的所述属性信息。
5.一种异常处理的装置,其特征在于,包括:
检测模块,用于检测到指令中的一个或多个异常状态;
查找模块,用于在指令异常状态列表中查找所述异常状态对应的属性信息,所述指令异常状态列表保存各个所述异常状态的所述属性信息,其中,所述属性信息包括异常编号、异常类型、异常等级、异常消息和异常解决方案;
显示模块,用于显示所述异常状态对应的所述属性信息;
所述装置还包括:获取模块,用于获取所述异常状态的异常类型或者所述异常等级;
处理模块,用于根据所述异常类型号或者所述异常等级对所述异常状态进行相应的异常处理;
其中,所述处理模块包括:比较模块,用于比较所述异常等级是否在预定等级的范围内,并根据多个属性信息中的异常类型确定当前异常状态的层,其中,当所述异常等级在所述预定等级的范围之内时,逐层返回到该异常等级对应的所述异常状态进行所述异常处理,并显示所述异常状态对应的所述属性信息;当所述异常等级在所述预定等级的范围之外时,在预定时间内对该异常等级对应的异常状态进行所述异常处理,该异常状态的属性信息在后台添加。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:保存模块,用于通过传输接口在日志文件中记录该异常状态对应的所述属性信息。
7.根据权利要求6所述的装置,其特征在于,所述显示模块包括:显示界面,用于提供一个用户界面读取并显示所述异常状态对应的所述属性信息。
异常处理的方法及装置\n技术领域\n[0001] 本发明涉及一种异常处理的方法及装置。\n背景技术\n[0002] 计算机的异常处理功能提供了处理程序运行时出现的任何意外或异常情况的方法。异常处理使用try、catch和finally的关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。对待异常通常并不是简单地结束程序,而是转去执行某段特殊代码处理这个异常,设法恢复程序继续执行。异常发生时,系统从生成对象的代码开始,沿方法的调用栈逐层回溯,寻找相应的处理代码,并把异常对象交给该方法进行处理。\n[0003] 异常处理理论上有两种基本模型:一种称为“终止模型”,在这种模型中,将假设异常非常严重,以致于程序无法返回到异常发生的地方继续执行。一旦异常被抛出,就表明异常已无法挽回,也不能回来继续执行;另一种称为“恢复模型”,意思是异常处理程序的工作是修正异常,然后重新尝试调动出问题的方法。对于恢复模型,通常希望异常被处理之后能继续执行程序。在这种情况下,不是抛出异常,而是调用方法修正异常。或者把try块放在while循环里,这样就可以不断的进入try块,直到得到满意的结果。然而处理程序必须关注异常抛出的地点,这势必要包含依赖于抛出位置的非通用性代码。这增加了代码编写和维护的困难,对于异常可能会从许多地方抛出的大型程序来说更是如此。\n[0004] 经过发明人分析可知,由于现有的异常处理方法在遇到异常状态时就进行异常处理,由于程序代码庞大,因此会导致异常处理的过程复杂、效率低,针对相关技术中异常处理的过程复杂导致异常处理正确性低、效率低,以至于软件健壮性较差的问题,目前尚未提出有效的解决方案。\n发明内容\n[0005] 本发明的主要目的在于提供一种异常处理的方法及装置,以解决异常处理的过程复杂导致异常处理正确性低、效率低,以至于软件健壮性较差的问题。\n[0006] 为了实现上述目的,根据本发明的一个方面,提供了一种异常处理的方法。\n[0007] 根据本发明的异常处理的方法包括:检测到指令中的一个或多个异常状态;在指令异常状态列表中查找异常状态对应的属性信息,指令异常状态列表保存各个异常状态的属性信息;显示异常状态对应的属性信息。\n[0008] 进一步地,属性信息可以包括:异常编号、异常类型、异常等级、异常消息和异常解决方案。\n[0009] 进一步地,在指令异常状态列表中查找异常状态对应的属性信息之后,方法还可以包括:获取异常状态的异常类型或者异常等级;根据异常类型或者异常等级对异常状态进行相应的异常处理。\n[0010] 进一步地,根据异常类型或者异常等级对异常状态进行相应的异常处理可以包括:比较异常等级是否在预定等级的范围内,其中,当异常等级在预定等级的范围之内时,逐层返回到该异常等级对应的异常状态进行异常处理,并显示异常状态对应的属性信息;\n当异常等级在预定等级的范围之外时,在预定时间内对该异常等级对应的异常状态进行异常处理,该异常状态的属性信息在后台添加。\n[0011] 进一步地,显示异常状态对应的属性信息之前,方法还可以包括:通过传输接口在日志文件中记录该异常状态的属性信息。\n[0012] 进一步地,可以提供一个用户界面读取并显示异常状态对应的属性信息。\n[0013] 为了实现上述目的,根据本发明的另一方面,提供了一种异常处理的装置。\n[0014] 根据本发明的异常处理的装置包括:检测模块,用于检测到指令中的一个或多个异常状态;查找模块,用于在指令异常状态列表中查找异常状态对应的属性信息,指令异常状态列表保存各个异常状态的属性信息,其中,属性信息包括异常编号、异常类型、异常等级、异常消息和异常解决方案;显示模块,用于显示异常状态对应的属性信息。\n[0015] 进一步地,异常处理装置还可以包括:获取模块,用于获取异常状态的异常类型或者异常等级;处理模块,用于根据异常类型号或者异常等级对异常状态进行相应的异常处理。\n[0016] 进一步地,处理模块可以包括:比较模块,用于比较异常等级是否在预定等级的范围内,其中,当异常等级在预定等级的范围之内时,逐层返回到该异常等级对应的异常状态进行异常处理,并显示异常状态对应的属性信息;当异常等级在预定等级的范围之外时,在预定时间内对该异常等级对应的异常状态进行异常处理,该异常状态的属性信息在后台添加。\n[0017] 进一步地,装置还可以包括:保存模块,用于通过传输接口在日志文件中记录该异常状态对应的属性信息。\n[0018] 进一步地,显示模块可以包括:显示界面,用于提供一个用户界面读取并显示异常状态对应的属性信息。\n[0019] 通过本发明,采用检测到指令中的一个或多个异常状态;在指令异常状态列表中查找异常状态对应的属性信息,指令异常状态列表保存各个异常状态的属性信息;显示异常状态对应的属性信息,解决了异常处理的过程复杂导致异常处理正确性低、效率低,以至于软件健壮性较差的问题,进而达到了快速准确地定位到发生异常的地点,提高异常处理的正确性和处理效率,便于软件代码维护,提高用户的易用性和软件健壮性的效果。\n附图说明\n[0020] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:\n[0021] 图1是根据本发明实施例的异常处理的装置示意图;\n[0022] 图2是根据本发明实施例的异常处理的方法流程图。\n具体实施方式\n[0023] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。\n[0024] 根据本发明的实施例,提供了一种异常处理的装置。\n[0025] 图1是根据本发明实施例的异常处理的装置示意图。如图1所示,该异常处理的装置包括:检测模块11,用于检测到指令中的一个或多个异常状态;查找模块13,用于在指令异常状态列表中查找异常状态对应的属性信息,指令异常状态列表保存各个异常状态的属性信息,其中,属性信息包括异常编号、异常类型、异常等级、异常消息和异常解决方案;\n显示模块15,用于显示异常状态对应的属性信息。\n[0026] 本发明实施例中通过设置各种指令异常状态的列表对各种指令异常的多个属性信息进行定义,在逐层返回的过程中根据查找模块13获取一个或多个属性信息的组合,并将异常状态的各个属性信息显示给用户,查找模块13执行的查找过程便于操作者查找异常的抛出地点,以便后续进行正确的异常处理,即实现对异常状态进行报错。同时根据一个或多个属性信息的组合调用不同的处理方法来解决异常处理的过程复杂导致异常处理正确性低、效率低,以至于软件健壮性较差的问题。本发明的上述实施例便于软件代码维护,提高了用户的易用性和软件健壮性。\n[0027] 本发明中的异常属性信息可以包括以下几项:异常编号、异常类型、异常等级、异常消息和异常解决方案。其中,异常等级表示该异常的严重程度,按照严重程度对异常进行划分;异常消息为当前异常发生时所携带的信息;异常解决方案表示当前异常出现后对常产生的原因进行分析并提示解决的方案。\n[0028] 本发明的异常处理装置还可以包括:获取模块17,用于获取异常状态的异常类型或者异常等级;处理模块19,用于根据异常类型号或者异常等级对异常状态进行相应的异常处理。\n[0029] 上述实施例中优选的,设计者可以根据多个属性信息中的异常类型确定当前异常状态的层,系统根据异常类型逐层返回到该层来调用下一步的异常处理方法;另外,设计者也可以根据异常等级确定当前异常状态的层,该等级可以表征当前异常的严重程度,对异常较严重的异常状态系统根据查询结果优先调用异常处理方法执行异常处理。该实施例解决了以往异常处理过程复杂、效率低的问题,可以快速确定异常的地点。\n[0030] 本发明的处理模块19可以包括:比较模块,该比较模块用于比较异常等级是否在预定等级的范围内,其中,当异常等级在预定等级的范围之内时,逐层返回到该异常等级对应的异常状态进行异常处理,并显示异常状态对应的属性信息;当异常等级在预定等级的范围之外时,在预定时间内对该异常等级对应的异常状态进行异常处理,该异常状态的属性信息在后台添加。\n[0031] 上述实施例优选的将异常等级和设计者设定的预定等级进行比较判断,当异常的严重等级超过预定范围时,系统只在最高层的调用函数中显示异常,即对符合预定范围内的异常等级对应的异常状态进行异常函数的调用,而对底层的被调用函数不允许显示异常,只能添加异常和异常扩展信息。\n[0032] 在异常抛出之后,上述装置还可以包括保存模块,用于通过传输接口在日志文件中记录该异常状态对应的属性信息。该实施例中实现通过日志文件详细记录异常的详细信息,为最终的显示异常等具体操作作准备工作。\n[0033] 本发明的显示模块可以提供一种显示界面,用于提供一个用户界面读取并显示异常状态对应的属性信息。采用用户界面的显示方式简单、清晰,易用性高。\n[0034] 图2是根据本发明实施例的异常处理的方法流程图。如图1所示,该方法包括如下的步骤S202至步骤S206:\n[0035] 步骤S202,通过图1中的检测模块11检测到指令中的一个或多个异常状态。该步骤为用户操作过程中系统检测到异常状态。\n[0036] 步骤S204,通过图1中的查找模块13在指令异常状态列表中查找检测模块11检测到的异常状态对应的属性信息,指令异常状态列表保存各个异常状态的属性信息;其中,属性信息可以包括:异常编号、异常类型、异常等级、异常消息和异常解决方案。\n[0037] 步骤S206,通过图1种的显示模块15将显示查找模块13获取的异常状态对应的属性信息。\n[0038] 上述实施例通过设置各种指令异常状态的列表对各种指令异常的多个属性信息进行定义,步骤中的查找过程便于操作者查找异常的抛出地点,以便后续进行正确的异常处理,即实现对异常状态进行报错,提高了后续异常处理的正确性和效率,便于用户对软件代码维护,提高了用户的易用性和软件健壮性。\n[0039] 本实施例在指令异常状态列表中查找异常状态对应的属性信息之后,方法还可以包括:获取异常状态的异常类型或者异常等级;根据异常类型或者异常等级对异常状态进行相应的异常处理。\n[0040] 优选的,根据异常类型或者异常等级对异常状态进行相应的异常处理可以包括:\n比较异常等级是否在预定等级的范围内,其中,当异常等级在预定等级的范围之内时,逐层返回到该异常等级对应的异常状态进行异常处理,并显示异常状态对应的属性信息;当异常等级在预定等级的范围之外时,在预定时间内对该异常等级对应的异常状态进行异常处理,该异常状态的属性信息在后台添加。\n[0041] 由上述可知在在多层的异常处理调用中,对发生的异常状态加以详细描述,即设定异常状态属性信息,优选的可以定义异常等级以及异常编号等宏,本发明实施例在异常抛出时不在当前层内处理异常,把异常抛出到调用函数中,采用逐层返回到实际产生当前层异常的层获取其异常处理函数。本实施例可以将异常分为若干类,如系统、文件操作、数据库操作、使用权限等,返回时可以同时返回异常类别和编号,针对不同的异常进行相应的异常处理。\n[0042] 本发明实施例的操作的原则有两点:首先只有在函数自身内部发生的异常状态,才能添加异常,如果是调用其它函数发生了异常,则只在调用点添加附加信息并返回异常。\n另外只在最高层(例如是在预定范围内的异常等级所对应的异常所在的层)的调用函数中显示异常,底层(例如在预定范围外的异常等级所对应的异常所在的层)被调用函数不允许显示异常状态的属性信息,只能添加异常信息和异常扩展信息。其次调用函数返回的异常需要全路径处理,返回几种异常就要处理几种异常。这样保证了产生异常的属性信息不会混淆,层级分明,逐层返回。\n[0043] 本发明实施例中,在显示异常状态对应的属性信息之前,方法还可以包括:通过传输接口在日志文件中记录该异常状态的属性信息。\n[0044] 该实施例具体实施例是可以通过各个模块将异常状态的属性信息记录到日志中,最终将异常状态的属性信息显示。例如,采用一段计算机程序通过ICxErrorHandle接口处理初始化异常日志环境、异常状态的各个属性信息从日志中读写、最终在界面中显示异常状态的属性信息等具体操作,具体的异常属性信息则可以保存在ICxError接口中,即异常状态的详细信息记录在日志文件中。\n[0045] 同时本发明可以提供一个用户界面读取并显示异常状态对应的属性信息。该用户界面简单直观。\n[0046] 从以上的描述中,可以看出,本发明实现了如下技术效果:本发明提高了错误处理的正确性,针对不同异常采取不同处理方式,提高软件健壮性。提高了错误处理的效率,快速准确地定位到发生异常的地点,便于代码维护。通过实际系统的运行,逐层返回机制的使用使得软件稳定性得到了有效提高,同时对于定位错误和完善地进行错误处理取得了实际效果。\n[0047] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。\n[0048] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。\n[0049] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2013-03-13
专利权人的姓名或者名称、地址的变更
专利权人由北京数码大方科技有限公司变更为北京数码大方科技股份有限公司
地址由100080 北京市海淀区知春路甲63号卫星大厦802室变更为100080 北京市海淀区知春路甲63号卫星大厦802室
- 2012-10-10
- 2011-03-02
实质审查的生效
IPC(主分类): G06F 11/00
专利申请号: 201010267778.0
申请日: 2010.08.30
- 2011-01-05
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |