一種軟件異常處理方法及針對(duì)軟件的異常自保護(hù)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體說涉及一種軟件異常處理方法及針對(duì)軟件的異常自保護(hù)系統(tǒng)。
【背景技術(shù)】
[0002]當(dāng)軟件在運(yùn)行過程中,因?yàn)檐浖陨砭幋a的漏洞或者軟件使用者的非常規(guī)使用,會(huì)導(dǎo)致軟件出現(xiàn)異?;蝈e(cuò)誤。
[0003]現(xiàn)有的軟件處理這些異?;蝈e(cuò)誤的方案大致有兩種:
[0004]第一種:捕獲該異?;蝈e(cuò)誤,不作任何處理;
[0005]第二種:捕獲指定類型異常或錯(cuò)誤,所有情況統(tǒng)一分類處理。
[0006]上述兩種方案雖然針對(duì)已經(jīng)發(fā)生的異常的處理,但是在運(yùn)行環(huán)境相同的情況下異常會(huì)被再次觸發(fā)。
[0007]因此,為了提高軟件運(yùn)行的穩(wěn)定性,盡可能地避免相同的異常被重復(fù)多次觸發(fā),需要一種針對(duì)軟件的異常自保護(hù)方法。
【發(fā)明內(nèi)容】
[0008]為了提高軟件運(yùn)行的穩(wěn)定性,盡可能地避免相同的異常被重復(fù)多次觸發(fā),本發(fā)明提供了一種軟件異常處理方法,包括:
[0009]在進(jìn)行當(dāng)前待處理事件前,啟動(dòng)異常檢查模塊;
[0010]利用所述啟動(dòng)異常檢查模塊檢查所述當(dāng)前待處理事件是否滿足異常觸發(fā)條件;
[0011]當(dāng)所述當(dāng)前待處理事件滿足異常觸發(fā)條件時(shí)停止進(jìn)行所述當(dāng)前待處理事件。
[0012]在一實(shí)施例中,利用所述啟動(dòng)異常檢查模塊檢查所述當(dāng)前待處理事件是否滿足異常觸發(fā)條件,包括:
[0013]搜索與所述當(dāng)前待處理事件對(duì)應(yīng)的異常記錄;
[0014]在當(dāng)前待處理事件存在異常記錄時(shí),抽取所述當(dāng)前待處理事件的輸入?yún)?shù);
[0015]將該異常記錄中的輸入?yún)?shù)與所述輸入?yún)?shù)匹配;
[0016]當(dāng)所述匹配的結(jié)果一致時(shí)所述當(dāng)前待處理事件滿足異常觸發(fā)條件。
[0017]在一實(shí)施例中,所述方法還包括:
[0018]當(dāng)所述當(dāng)前待處理事件滿足異常觸發(fā)條件時(shí),輸出所述異常記錄對(duì)應(yīng)的結(jié)果,包括輸出函數(shù)警告信息,或輸出系統(tǒng)崩潰信息。
[0019]在一實(shí)施例中,所述方法還包括:在所述當(dāng)前待處理事件不滿足所述異常觸發(fā)條件而發(fā)生異常,創(chuàng)建針對(duì)該異常的異常觸發(fā)記錄并存儲(chǔ)該異常發(fā)生時(shí),當(dāng)前待處理事件的輸入?yún)?shù)。
[0020]在一實(shí)施例中,所述方法還包括:當(dāng)軟件被更新時(shí),刪除該版本軟件對(duì)應(yīng)的所述異常觸發(fā)條件。
[0021]本發(fā)明還提出了一種針對(duì)軟件的異常自保護(hù)系統(tǒng),包括:
[0022]異常檢查啟動(dòng)模塊,其配置為在進(jìn)行當(dāng)前待處理事件前,調(diào)用異常檢查模塊;
[0023]異常檢查模塊,其配置為檢查所述當(dāng)前待處理事件是否滿足異常觸發(fā)條件;
[0024]當(dāng)所述當(dāng)前待處理事件滿足異常觸發(fā)條件時(shí)停止進(jìn)行所述當(dāng)前待處理事件。
[0025]在一實(shí)施例中,所述異常檢查模塊可通過如下方式配置:
[0026]搜索與所述當(dāng)前待處理事件對(duì)應(yīng)的異常記錄;
[0027]在當(dāng)前待處理事件存在異常記錄時(shí),抽取所述當(dāng)前待處理事件的輸入?yún)?shù);
[0028]將該異常記錄中的輸入?yún)?shù)與所述輸入?yún)?shù)匹配;
[0029]當(dāng)所述匹配的結(jié)果一致時(shí)所述當(dāng)前待處理事件滿足異常觸發(fā)條件。
[0030]在一實(shí)施例中,所述系統(tǒng)還包括:
[0031]提醒模塊,其配置為:當(dāng)所述當(dāng)前待處理事件滿足異常觸發(fā)條件時(shí),輸出所述異常記錄對(duì)應(yīng)的結(jié)果,包括輸出函數(shù)警告信息,或輸出系統(tǒng)崩潰信息。
[0032]在一實(shí)施例中,所述系統(tǒng)還包括:
[0033]記錄創(chuàng)建模塊,其配置為:在所述當(dāng)前待處理事件不滿足所述異常觸發(fā)條件而發(fā)生異常,創(chuàng)建針對(duì)該異常的異常觸發(fā)記錄并存儲(chǔ)該異常發(fā)生時(shí),當(dāng)前待處理事件的輸入?yún)?shù)。
[0034]在一實(shí)施例中,所述系統(tǒng)還包括:
[0035]更新模塊,其配置為:當(dāng)軟件被更新時(shí),刪除該版本軟件對(duì)應(yīng)的所述異常觸發(fā)條件。
[0036]與現(xiàn)有技術(shù)相比,根據(jù)本發(fā)明的方法及系統(tǒng)可以有效防止相同的異常被重復(fù)觸發(fā),從而大大降低了異常的觸發(fā)頻率,提高了軟件運(yùn)行的穩(wěn)定性。
[0037]本發(fā)明的其它特征或優(yōu)點(diǎn)將在隨后的說明書中闡述。并且,本發(fā)明的部分特征或優(yōu)點(diǎn)將通過說明書而變得顯而易見,或者通過實(shí)施本發(fā)明而被了解。本發(fā)明的目的和部分優(yōu)點(diǎn)可通過在說明書、權(quán)利要求書以及附圖中所特別指出的步驟來實(shí)現(xiàn)或獲得。
【附圖說明】
[0038]附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例共同用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:
[0039]圖1是根據(jù)本發(fā)明一實(shí)施例的方法流程圖;
[0040]圖2是根據(jù)本發(fā)明一實(shí)施例的系統(tǒng)結(jié)構(gòu)簡(jiǎn)圖。
【具體實(shí)施方式】
[0041]以下將結(jié)合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,借此本發(fā)明的實(shí)施人員可以充分理解本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題,并達(dá)成技術(shù)效果的實(shí)現(xiàn)過程并依據(jù)上述實(shí)現(xiàn)過程具體實(shí)施本發(fā)明。需要說明的是,只要不構(gòu)成沖突,本發(fā)明中的各個(gè)實(shí)施例以及各實(shí)施例中的各個(gè)特征可以相互結(jié)合,所形成的技術(shù)方案均在本發(fā)明的保護(hù)范圍之內(nèi)。
[0042]為了提高軟件運(yùn)行的穩(wěn)定性,本發(fā)明提出了一種軟件異常處理方法。本發(fā)明的方法的主要步驟是:首先在進(jìn)行當(dāng)前待處理事件前,啟動(dòng)異常檢查模塊;然后利用啟動(dòng)異常檢查模塊檢查當(dāng)前待處理事件是否滿足異常觸發(fā)條件;當(dāng)當(dāng)前待處理事件滿足異常觸發(fā)條件時(shí)停止進(jìn)行當(dāng)前待處理事件。這樣就能有效避免相同的異常(已知的異常)被重復(fù)多次觸發(fā),從而提高軟件運(yùn)行的穩(wěn)定性。
[0043]接下來基于附圖來詳細(xì)描述根據(jù)本發(fā)明一實(shí)施例的方法的執(zhí)行流程。附圖的流程圖中示出的步驟可以在包含諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行。雖然在流程圖中示出了各步驟的邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
[0044]為了在處理當(dāng)前待處理事件之前分析當(dāng)前待處理事件是否符合異常觸發(fā)條件,在本實(shí)施例中,如圖1所示,首先執(zhí)行步驟S110,構(gòu)造異常數(shù)據(jù)庫(kù)步驟。在步驟SllO中,構(gòu)造用于存儲(chǔ)異常觸發(fā)條件的異常數(shù)據(jù)庫(kù)。這樣就可以通過分析當(dāng)前待處理事件是否與異常數(shù)據(jù)庫(kù)中存儲(chǔ)的異常觸發(fā)條件匹配來分析當(dāng)前待處理事件是否符合異常觸發(fā)條件。
[0045]異常觸發(fā)條件包含觸發(fā)異常的事件對(duì)應(yīng)的異常記錄。進(jìn)一步的,在實(shí)際運(yùn)行過程中,事件的處理過程即是相應(yīng)的函數(shù)的執(zhí)行過程。因此在本實(shí)施例中,首先以函數(shù)標(biāo)記事件,每條異常記錄為其對(duì)應(yīng)的引發(fā)異常的事件的執(zhí)行函數(shù)的函數(shù)名。
[0046]另外,在函數(shù)執(zhí)行過程中,輸入?yún)?shù)的不同會(huì)直接影響到函數(shù)的處理情況。也就是說,針對(duì)同一函數(shù),輸入?yún)?shù)的改變會(huì)直接影響到是否會(huì)觸發(fā)異常。因此,在本實(shí)施例中,異常觸發(fā)條件包含觸發(fā)異常的事件(函數(shù))對(duì)應(yīng)的輸入?yún)?shù)(為保證異常觸發(fā)條件的完整,在本實(shí)施例中,這里的輸入?yún)?shù)指所有的輸入?yún)?shù)。當(dāng)沒有輸入?yún)?shù)則記為空(null))。
[0047]接下來執(zhí)行步驟S120,啟動(dòng)異常檢查模塊步驟。在處理事件前(在執(zhí)行每個(gè)函數(shù)之前),啟動(dòng)異常檢查模塊。并接下來執(zhí)行步驟S130,函數(shù)匹配步驟,從異常數(shù)據(jù)庫(kù)中搜索與當(dāng)前待處理事件對(duì)應(yīng)的異常記錄(函數(shù)名)。具體的,異常檢查模塊檢查異常數(shù)據(jù)庫(kù)中是否保存有與要執(zhí)行的函數(shù)的函數(shù)名匹配的異常記錄(逐條匹配軟件異常數(shù)據(jù)庫(kù)中的記錄)。如果匹配成功,則匹配過程停止(步驟S130執(zhí)行完畢);否則繼續(xù)匹配直到最后一條異常記錄。如果直到最后一條異常記錄也沒有匹配成功,那么說明當(dāng)前需要處理的函數(shù)不會(huì)觸發(fā)已知的異常。此時(shí)執(zhí)行步驟SI 50,處理事件。
[0048]如果在步驟S130中函數(shù)名匹配(數(shù)據(jù)庫(kù)中存在該函數(shù)名),則執(zhí)行步驟S131,輸入?yún)?shù)匹配步驟,抽取當(dāng)前待處理事件的輸入?yún)?shù)并將數(shù)據(jù)庫(kù)中的與當(dāng)前待處理事件對(duì)應(yīng)的異常記錄的輸入?yún)?shù)與當(dāng)前待處理事件的輸入?yún)?shù)匹配。即進(jìn)一步驗(yàn)證當(dāng)前函數(shù)的輸入?yún)?shù)是否與異常數(shù)據(jù)庫(kù)中存儲(chǔ)的該函數(shù)名對(duì)應(yīng)的輸入?yún)?shù)值匹配。如果匹配成功,則說明當(dāng)前需要處理的函數(shù)會(huì)觸發(fā)異常。如果沒有匹配成功,那么說明當(dāng)前需要處理的函數(shù)不會(huì)觸發(fā)已知的異常。執(zhí)行步驟S150,處理事件。
[0049]當(dāng)當(dāng)前待處理事件(函數(shù))與異常數(shù)據(jù)庫(kù)中存儲(chǔ)的異常觸發(fā)條件匹配(步驟S130匹配成功且步驟S131匹配成功)時(shí)執(zhí)行步驟S140,停止處理該事件(函數(shù))。
[0050]進(jìn)一步的,在執(zhí)行步驟S140之后執(zhí)行步驟S141,提醒用戶步驟。在步驟S141中,輸出異常記錄對(duì)應(yīng)的結(jié)果以提醒用戶當(dāng)前要處理的事件(函數(shù))會(huì)觸發(fā)異常。具體的,輸出函數(shù)警告信息,或輸出系統(tǒng)崩潰信息。步驟S141可以與步驟S140同時(shí)執(zhí)行或者在步驟S140之前執(zhí)行。
[0051]進(jìn)一步的,在本發(fā)明一實(shí)施例中,在步驟SllO中,將異常觸發(fā)條件對(duì)應(yīng)的異常被觸發(fā)后會(huì)導(dǎo)致的后果存儲(chǔ)入異常數(shù)據(jù)庫(kù)中,在步驟S141中向用戶輸出該后果,以便用戶能夠清晰的了解當(dāng)前的異常狀態(tài)。
[0052]進(jìn)一步的,在本發(fā)明一實(shí)施例中,對(duì)異常被觸發(fā)后會(huì)導(dǎo)致的后果進(jìn)行分類(例如基于后果對(duì)整個(gè)程序的運(yùn)行影響程度分類,只影響程序部分進(jìn)程或是影響程序全體進(jìn)程),在步驟S141中,基于事件對(duì)應(yīng)的異常分類結(jié)果采用相應(yīng)的提醒模式。這樣用戶就能更加迅速的了解當(dāng)前的異常狀態(tài)并進(jìn)一步采取更加準(zhǔn)確的應(yīng)對(duì)模式。
[0053]在本實(shí)施例中,異常數(shù)據(jù)庫(kù)是根據(jù)已知的異常觸發(fā)條件預(yù)先構(gòu)造的。但是已知的異常觸發(fā)情況并