CN105677503A - 一种软件异常处理方法及针对软件的异常自保护系统 - Google Patents
一种软件异常处理方法及针对软件的异常自保护系统 Download PDFInfo
- Publication number
- CN105677503A CN105677503A CN201610019362.4A CN201610019362A CN105677503A CN 105677503 A CN105677503 A CN 105677503A CN 201610019362 A CN201610019362 A CN 201610019362A CN 105677503 A CN105677503 A CN 105677503A
- Authority
- CN
- China
- Prior art keywords
- exception
- current pending
- pending event
- abnormal
- software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0796—Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种软件异常处理方法及针对软件的异常自保护系统。本发明的方法包括:在进行当前待处理事件前,启动异常检查模块;利用所述启动异常检查模块检查所述当前待处理事件是否满足异常触发条件;当所述当前待处理事件满足异常触发条件时停止进行所述当前待处理事件。与现有技术相比,根据本发明的方法及系统可以有效防止相同的异常被重复触发,从而大大降低了异常的触发频率,提高了软件运行的稳定性。
Description
技术领域
本发明涉及计算机技术领域,具体说涉及一种软件异常处理方法及针对软件的异常自保护系统。
背景技术
当软件在运行过程中,因为软件自身编码的漏洞或者软件使用者的非常规使用,会导致软件出现异常或错误。
现有的软件处理这些异常或错误的方案大致有两种:
第一种:捕获该异常或错误,不作任何处理;
第二种:捕获指定类型异常或错误,所有情况统一分类处理。
上述两种方案虽然针对已经发生的异常的处理,但是在运行环境相同的情况下异常会被再次触发。
因此,为了提高软件运行的稳定性,尽可能地避免相同的异常被重复多次触发,需要一种针对软件的异常自保护方法。
发明内容
为了提高软件运行的稳定性,尽可能地避免相同的异常被重复多次触发,本发明提供了一种软件异常处理方法,包括:
在进行当前待处理事件前,启动异常检查模块;
利用所述启动异常检查模块检查所述当前待处理事件是否满足异常触发条件;
当所述当前待处理事件满足异常触发条件时停止进行所述当前待处理事件。
在一实施例中,利用所述启动异常检查模块检查所述当前待处理事件是否满足异常触发条件,包括:
搜索与所述当前待处理事件对应的异常记录;
在当前待处理事件存在异常记录时,抽取所述当前待处理事件的输入参数;
将该异常记录中的输入参数与所述输入参数匹配;
当所述匹配的结果一致时所述当前待处理事件满足异常触发条件。
在一实施例中,所述方法还包括:
当所述当前待处理事件满足异常触发条件时,输出所述异常记录对应的结果,包括输出函数警告信息,或输出系统崩溃信息。
在一实施例中,所述方法还包括:在所述当前待处理事件不满足所述异常触发条件而发生异常,创建针对该异常的异常触发记录并存储该异常发生时,当前待处理事件的输入参数。
在一实施例中,所述方法还包括:当软件被更新时,删除该版本软件对应的所述异常触发条件。
本发明还提出了一种针对软件的异常自保护系统,包括:
异常检查启动模块,其配置为在进行当前待处理事件前,调用异常检查模块;
异常检查模块,其配置为检查所述当前待处理事件是否满足异常触发条件;
当所述当前待处理事件满足异常触发条件时停止进行所述当前待处理事件。
在一实施例中,所述异常检查模块可通过如下方式配置:
搜索与所述当前待处理事件对应的异常记录;
在当前待处理事件存在异常记录时,抽取所述当前待处理事件的输入参数;
将该异常记录中的输入参数与所述输入参数匹配;
当所述匹配的结果一致时所述当前待处理事件满足异常触发条件。
在一实施例中,所述系统还包括:
提醒模块,其配置为:当所述当前待处理事件满足异常触发条件时,输出所述异常记录对应的结果,包括输出函数警告信息,或输出系统崩溃信息。
在一实施例中,所述系统还包括:
记录创建模块,其配置为:在所述当前待处理事件不满足所述异常触发条件而发生异常,创建针对该异常的异常触发记录并存储该异常发生时,当前待处理事件的输入参数。
在一实施例中,所述系统还包括:
更新模块,其配置为:当软件被更新时,删除该版本软件对应的所述异常触发条件。
与现有技术相比,根据本发明的方法及系统可以有效防止相同的异常被重复触发,从而大大降低了异常的触发频率,提高了软件运行的稳定性。
本发明的其它特征或优点将在随后的说明书中阐述。并且,本发明的部分特征或优点将通过说明书而变得显而易见,或者通过实施本发明而被了解。本发明的目的和部分优点可通过在说明书、权利要求书以及附图中所特别指出的步骤来实现或获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据本发明一实施例的方法流程图;
图2是根据本发明一实施例的系统结构简图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此本发明的实施人员可以充分理解本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程并依据上述实现过程具体实施本发明。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
为了提高软件运行的稳定性,本发明提出了一种软件异常处理方法。本发明的方法的主要步骤是:首先在进行当前待处理事件前,启动异常检查模块;然后利用启动异常检查模块检查当前待处理事件是否满足异常触发条件;当当前待处理事件满足异常触发条件时停止进行当前待处理事件。这样就能有效避免相同的异常(已知的异常)被重复多次触发,从而提高软件运行的稳定性。
接下来基于附图来详细描述根据本发明一实施例的方法的执行流程。附图的流程图中示出的步骤可以在包含诸如一组计算机可执行指令的计算机系统中执行。虽然在流程图中示出了各步骤的逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
为了在处理当前待处理事件之前分析当前待处理事件是否符合异常触发条件,在本实施例中,如图1所示,首先执行步骤S110,构造异常数据库步骤。在步骤S110中,构造用于存储异常触发条件的异常数据库。这样就可以通过分析当前待处理事件是否与异常数据库中存储的异常触发条件匹配来分析当前待处理事件是否符合异常触发条件。
异常触发条件包含触发异常的事件对应的异常记录。进一步的,在实际运行过程中,事件的处理过程即是相应的函数的执行过程。因此在本实施例中,首先以函数标记事件,每条异常记录为其对应的引发异常的事件的执行函数的函数名。
另外,在函数执行过程中,输入参数的不同会直接影响到函数的处理情况。也就是说,针对同一函数,输入参数的改变会直接影响到是否会触发异常。因此,在本实施例中,异常触发条件包含触发异常的事件(函数)对应的输入参数(为保证异常触发条件的完整,在本实施例中,这里的输入参数指所有的输入参数。当没有输入参数则记为空(null))。
接下来执行步骤S120,启动异常检查模块步骤。在处理事件前(在执行每个函数之前),启动异常检查模块。并接下来执行步骤S130,函数匹配步骤,从异常数据库中搜索与当前待处理事件对应的异常记录(函数名)。具体的,异常检查模块检查异常数据库中是否保存有与要执行的函数的函数名匹配的异常记录(逐条匹配软件异常数据库中的记录)。如果匹配成功,则匹配过程停止(步骤S130执行完毕);否则继续匹配直到最后一条异常记录。如果直到最后一条异常记录也没有匹配成功,那么说明当前需要处理的函数不会触发已知的异常。此时执行步骤S150,处理事件。
如果在步骤S130中函数名匹配(数据库中存在该函数名),则执行步骤S131,输入参数匹配步骤,抽取当前待处理事件的输入参数并将数据库中的与当前待处理事件对应的异常记录的输入参数与当前待处理事件的输入参数匹配。即进一步验证当前函数的输入参数是否与异常数据库中存储的该函数名对应的输入参数值匹配。如果匹配成功,则说明当前需要处理的函数会触发异常。如果没有匹配成功,那么说明当前需要处理的函数不会触发已知的异常。执行步骤S150,处理事件。
当当前待处理事件(函数)与异常数据库中存储的异常触发条件匹配(步骤S130匹配成功且步骤S131匹配成功)时执行步骤S140,停止处理该事件(函数)。
进一步的,在执行步骤S140之后执行步骤S141,提醒用户步骤。在步骤S141中,输出异常记录对应的结果以提醒用户当前要处理的事件(函数)会触发异常。具体的,输出函数警告信息,或输出系统崩溃信息。步骤S141可以与步骤S140同时执行或者在步骤S140之前执行。
进一步的,在本发明一实施例中,在步骤S110中,将异常触发条件对应的异常被触发后会导致的后果存储入异常数据库中,在步骤S141中向用户输出该后果,以便用户能够清晰的了解当前的异常状态。
进一步的,在本发明一实施例中,对异常被触发后会导致的后果进行分类(例如基于后果对整个程序的运行影响程度分类,只影响程序部分进程或是影响程序全体进程),在步骤S141中,基于事件对应的异常分类结果采用相应的提醒模式。这样用户就能更加迅速的了解当前的异常状态并进一步采取更加准确的应对模式。
在本实施例中,异常数据库是根据已知的异常触发条件预先构造的。但是已知的异常触发情况并不能包含实际运行的所有情况。在软件运行过程中,往往会有意外情况发生从而触发未知的异常。在了最大限度的减少异常被触发的频率,避免相同的异常被重复触发。本实施例的方法在软件的运行过程中即时的更新异常数据库。
具体的,在步骤S150的执行过程中,执行步骤S151,异常监测步骤。随时监测异常是否被触发。如果没有触发异常,则执行S152,继续正常处理事件并继续执行步骤S151。
如果在执行步骤S150的过程中异常被触发,即当前待处理事件不满足异常触发条件而发生了异常,这就说明触发的异常属于未知的异常,触发异常的事件对应的异常触发条件并没有保存在异常数据库中。此时执行步骤S160,获取当前触发异常的事件对应的异常触发条件。并且接下来执行步骤S161,将获取到的异常触发条件写入异常数据库。创建针对该异常的异常触发记录并存储该异常发生时当前待处理事件的输入参数。
具体的,由于现在大部分软件开发语言都有异常捕获机制,例如Java中的Exception类,以及Exception的各种子类。在调用指定函数的时候,会提示开发者捕获指定异常。因此在本实施例中,基于软件开发语言的异常捕获机制构造步骤S151。
这样,即使因为异常数据库的数据不足导致特定异常的首次触发并没有被阻止,也可以在接下来的软件运行过程中阻止该异常的再次被触发。
进一步的,在步骤S161中将异常被触发的时间存储入异常数据库中。这样就便于用户调阅历史异常发生状况,从而更加详细的了解异常触发情况。具体的,在本实施例中,异常发生的时间采用常规计时方式进行记录,例如2015/10/1410:16:35:353。
为了提高本发明的方法的适用性,在本发明的另一实施例中,也可以随着软件的运行自动构造异常数据库。首先正常运行软件,在软件的运行过程中,当软件第一次发生异常时自动创建异常数据库以存储异常对应的异常触发条件。并在接下来的软件运行过程中按照图1所示的流程一边阻值已被触发过的异常再次被触发,一边不断扩大存储的异常触发条件范围,从而不断提高软件运行的稳定程度。
进一步的,考虑到随着软件版本的更新,异常的具体情况(异常触发条件)也会随之更改。因此,在本发明一实施例中,当软件更新时删除上一软件版本对应的异常数据库。并针对新版本的软件构造新的异常数据库(预先构造或在软件运行过程中构造)。
综上,与现有技术相比,根据本发明的方法可以有效防止相同的异常被重复触发,从而大大降低了异常的触发频率,提高了软件运行的稳定性。
基于本发明的方法,本发明还提出了一种针对软件的异常自保护系统。如图2所示,在本发明一实施例中,系统200包括异常检查启动模块210以及异常检查模块220。异常检查启动模块210配置为在进行当前待处理事件前,调用异常检查模块220;异常检查模块220配置为检查当前待处理事件是否满足异常触发条件。
系统200还包括软件控制器240,软件控制器240配置为当当前待处理事件满足异常触发条件时停止进行当前待处理事件。
在本实施例中,异常检查模块220被配置为:
搜索与当前待处理事件对应的异常记录;
在当前待处理事件存在异常记录时,抽取当前待处理事件的输入参数;
将当前待处理事件对应的异常记录中的输入参数与输入参数匹配;
当匹配的结果一致时当前待处理事件满足异常触发条件。
为了便于异常检查模块220检查当前待处理事件是否满足异常触发条件,系统200还包括异常触发条件存储器230。异常触发条件存储器230用于存储异常触发条件(会触发异常的函数的函数名以及相应的输入参数)。异常检查模块220逐条匹配异常触发条件存储器230中的记录。首先按照函数名进行匹配,如果存在该函数名,则进一步匹配当前函数的输入参数是否与异常触发条件存储器230中该函数名对应的输入参数值相同。如果以上条件均满足,则匹配成功,匹配过程停止,否则继续匹配直到最后一条异常记录。
进一步的,在本实施例中,系统200还包括用户提醒装置250。用户提醒装置250用于基于异常检查模块220的输出结果向用户输出提醒。具体的,当当前待处理函数与异常触发条件匹配成功时,软件控制器240控制软件停止处理该函数;同时用户提醒装置250向用户发出提醒。用户提醒装置250输出的提醒信息包括输出函数警告信息或系统崩溃信息。
进一步的,为了扩展异常触发条件存储器230存储的异常触发条件以应对意外异常触发情况。在本实施例中,系统200还包含记录创建模块260。记录创建模块260在当前待处理事件不满足异常触发条件而发生异常时创建针对该异常的异常触发记录并存储该异常发生时当前待处理事件的输入参数。
具体的,在本实施例中,记录创建模块260监测当前正在处理的事件是否触发异常。当异常被触发时异常监测器260输出当前正在处理的事件对应的异常触发条件到异常触发条件存储器230中保存,从而扩展异常触发条件存储器230存储的异常触发条件。
进一步的,在本实施例中,系统200还包含更新模块270,更新模块270配置为:当软件被更新时,删除该版本软件对应的异常触发条件。具体的,当软件被更新时,更新模块270删除异常触发条件存储器230中保存的该版本软件对应的异常触发条件。
综上,与现有技术相比,根据本发明的系统可以有效防止相同的异常被重复触发,从而大大降低了异常的触发频率,提高了软件运行的稳定性。
虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。本发明所述的方法还可有其他多种实施例。在不背离本发明实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变或变形,但这些相应的改变或变形都应属于本发明的权利要求的保护范围。
Claims (10)
1.一种软件异常处理方法,其特征在于,包括:
在进行当前待处理事件前,启动异常检查模块;
利用所述启动异常检查模块检查所述当前待处理事件是否满足异常触发条件;
当所述当前待处理事件满足异常触发条件时停止进行所述当前待处理事件。
2.根据权利要求1所述的方法,其特征在于,利用所述启动异常检查模块检查所述当前待处理事件是否满足异常触发条件,包括:
搜索与所述当前待处理事件对应的异常记录;
在当前待处理事件存在异常记录时,抽取所述当前待处理事件的输入参数;
将该异常记录中的输入参数与所述输入参数匹配;
当所述匹配的结果一致时所述当前待处理事件满足异常触发条件。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
当所述当前待处理事件满足异常触发条件时,输出所述异常记录对应的结果,包括输出函数警告信息,或输出系统崩溃信息。
4.根据权利要求1-3中任一项所述的方法,其特征在于,还包括:在所述当前待处理事件不满足所述异常触发条件而发生异常,创建针对该异常的异常触发记录并存储该异常发生时,当前待处理事件的输入参数。
5.根据权利要求1-4中任一项所述的方法,其特征在于,还包括:当软件被更新时,删除该版本软件对应的所述异常触发条件。
6.一种针对软件的异常自保护系统,其特征在于,包括:
异常检查启动模块,其配置为在进行当前待处理事件前,调用异常检查模块;
异常检查模块,其配置为检查所述当前待处理事件是否满足异常触发条件;
当所述当前待处理事件满足异常触发条件时停止进行所述当前待处理事件。
7.根据权利要求6所述的系统,其特征在于,所述异常检查模块可通过如下方式配置:
搜索与所述当前待处理事件对应的异常记录;
在当前待处理事件存在异常记录时,抽取所述当前待处理事件的输入参数;
将该异常记录中的输入参数与所述输入参数匹配;
当所述匹配的结果一致时所述当前待处理事件满足异常触发条件。
8.根据权利要求6或7所述的系统,其特征在于,还包括:
提醒模块,其配置为:当所述当前待处理事件满足异常触发条件时,输出所述异常记录对应的结果,包括输出函数警告信息,或输出系统崩溃信息。
9.根据权利要求6-8中任一项所述的系统,其特征在于,还包括:
记录创建模块,其配置为:在所述当前待处理事件不满足所述异常触发条件而发生异常,创建针对该异常的异常触发记录并存储该异常发生时,当前待处理事件的输入参数。
10.根据权利要求6-9中任一项所述的系统,其特征在于,还包括:
更新模块,其配置为:当软件被更新时,删除该版本软件对应的所述异常触发条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610019362.4A CN105677503B (zh) | 2016-01-13 | 2016-01-13 | 一种软件异常处理方法及针对软件的异常自保护系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610019362.4A CN105677503B (zh) | 2016-01-13 | 2016-01-13 | 一种软件异常处理方法及针对软件的异常自保护系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105677503A true CN105677503A (zh) | 2016-06-15 |
CN105677503B CN105677503B (zh) | 2018-10-26 |
Family
ID=56300280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610019362.4A Active CN105677503B (zh) | 2016-01-13 | 2016-01-13 | 一种软件异常处理方法及针对软件的异常自保护系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105677503B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201787A (zh) * | 2006-12-12 | 2008-06-18 | 英业达股份有限公司 | 软件程序的调试系统及方法 |
CN101719090A (zh) * | 2009-12-25 | 2010-06-02 | 珠海市君天电子科技有限公司 | 对计算机软件系统崩溃原因进行自动分析的方法 |
CN103257913A (zh) * | 2013-04-18 | 2013-08-21 | 西安交通大学 | 一种运行时软件故障检测排除系统和方法 |
US20140122935A1 (en) * | 2012-10-30 | 2014-05-01 | International Business Machines Corporation | Diagnosing a Problem of a Software Product Running in a Cloud Environment |
CN104142885A (zh) * | 2013-05-09 | 2014-11-12 | 百度在线网络技术(北京)有限公司 | 一种用于对被测程序进行异常测试的方法和装置 |
-
2016
- 2016-01-13 CN CN201610019362.4A patent/CN105677503B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101201787A (zh) * | 2006-12-12 | 2008-06-18 | 英业达股份有限公司 | 软件程序的调试系统及方法 |
CN101719090A (zh) * | 2009-12-25 | 2010-06-02 | 珠海市君天电子科技有限公司 | 对计算机软件系统崩溃原因进行自动分析的方法 |
US20140122935A1 (en) * | 2012-10-30 | 2014-05-01 | International Business Machines Corporation | Diagnosing a Problem of a Software Product Running in a Cloud Environment |
CN103257913A (zh) * | 2013-04-18 | 2013-08-21 | 西安交通大学 | 一种运行时软件故障检测排除系统和方法 |
CN104142885A (zh) * | 2013-05-09 | 2014-11-12 | 百度在线网络技术(北京)有限公司 | 一种用于对被测程序进行异常测试的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105677503B (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113568686B (zh) | Lua语言的异步处理方法、装置、计算机设备和存储介质 | |
CN110399241B (zh) | 任务异常处理方法、装置、计算机设备和可读存储介质 | |
CN104376082A (zh) | 一种把数据源文件中的数据导入到数据库中的方法 | |
CN110727724B (zh) | 数据抽取方法、装置、计算机设备和存储介质 | |
US10261942B2 (en) | Embedded processing of structured and unstructured data using a single application protocol interface (API) | |
CN109800577B (zh) | 一种识别逃逸安全监控行为的方法及装置 | |
CN106991104A (zh) | 数据库脚本部署装置和数据库脚本部署方法 | |
CN104503912A (zh) | 一种服务响应过程的监测方法及装置 | |
CN108459925B (zh) | 私有云设备及其数据库的修复方法、具有存储功能的装置 | |
CN111367869A (zh) | 镜像文件处理方法、装置、存储介质及电子设备 | |
CN108121789B (zh) | 一种日志管理方法及系统 | |
CN105677503A (zh) | 一种软件异常处理方法及针对软件的异常自保护系统 | |
CN109446077A (zh) | 一种数据库测试方法及装置 | |
CN103116724B (zh) | 探测程序样本危险行为的方法及装置 | |
CN109472135A (zh) | 一种检测进程注入的方法、装置及存储介质 | |
CN106254806A (zh) | 一种录像数据保护方法和装置 | |
CN105630526A (zh) | 脚本的加载控制方法及装置 | |
CN111629378B (zh) | 一种基于布隆过滤器拦截风险短信的方法及装置 | |
CN114661658A (zh) | 一种应用于远程视频会议的数据分析方法及系统 | |
CN111258860B (zh) | 数据告警方法、装置、计算机设备和存储介质 | |
CN109992482B (zh) | 观察中间件析构方法、装置、计算机设备和存储介质 | |
CN112015821A (zh) | 一种数据库同步方法、终端以及存储介质 | |
CN111045787A (zh) | 一种快速继续实验方法及系统 | |
CN110968467A (zh) | 一种gpu和算法的远程自动测试方法 | |
US11100088B1 (en) | Bulk file verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |