專利名稱:異常處理的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種異常處理的方法及裝置。
背景技術(shù):
計算機的異常處理功能提供了處理程序運行時出現(xiàn)的任何意外或異常情況的方 法。異常處理使用try、catch和finally的關(guān)鍵字來嘗試可能未成功的操作,處理失敗,以 及在事后清理資源。對待異常通常并不是簡單地結(jié)束程序,而是轉(zhuǎn)去執(zhí)行某段特殊代碼處 理這個異常,設(shè)法恢復(fù)程序繼續(xù)執(zhí)行。異常發(fā)生時,系統(tǒng)從生成對象的代碼開始,沿方法的 調(diào)用棧逐層回溯,尋找相應(yīng)的處理代碼,并把異常對象交給該方法進行處理。異常處理理論上有兩種基本模型一種稱為“終止模型”,在這種模型中,將假設(shè)異 常非常嚴(yán)重,以致于程序無法返回到異常發(fā)生的地方繼續(xù)執(zhí)行。一旦異常被拋出,就表明異 常已無法挽回,也不能回來繼續(xù)執(zhí)行;另一種稱為“恢復(fù)模型”,意思是異常處理程序的工作 是修正異常,然后重新嘗試調(diào)動出問題的方法。對于恢復(fù)模型,通常希望異常被處理之后能 繼續(xù)執(zhí)行程序。在這種情況下,不是拋出異常,而是調(diào)用方法修正異常?;蛘甙裻ry塊放在 while循環(huán)里,這樣就可以不斷的進入try塊,直到得到滿意的結(jié)果。然而處理程序必須關(guān) 注異常拋出的地點,這勢必要包含依賴于拋出位置的非通用性代碼。這增加了代碼編寫和 維護的困難,對于異??赡軙脑S多地方拋出的大型程序來說更是如此。經(jīng)過發(fā)明人分析可知,由于現(xiàn)有的異常處理方法在遇到異常狀態(tài)時就進行異常處 理,由于程序代碼龐大,因此會導(dǎo)致異常處理的過程復(fù)雜、效率低,針對相關(guān)技術(shù)中異常處 理的過程復(fù)雜導(dǎo)致異常處理正確性低、效率低,以至于軟件健壯性較差的問題,目前尚未提 出有效的解決方案。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種異常處理的方法及裝置,以解決異常處理的過程 復(fù)雜導(dǎo)致異常處理正確性低、效率低,以至于軟件健壯性較差的問題。為了實現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種異常處理的方法。根據(jù)本發(fā)明的異常處理的方法包括檢測到指令中的一個或多個異常狀態(tài);在指 令異常狀態(tài)列表中查找異常狀態(tài)對應(yīng)的屬性信息,指令異常狀態(tài)列表保存各個異常狀態(tài)的 屬性信息;顯示異常狀態(tài)對應(yīng)的屬性信息。進一步地,屬性信息可以包括異常編號、異常類型、異常等級、異常消息和異常解 決方案。進一步地,在指令異常狀態(tài)列表中查找異常狀態(tài)對應(yīng)的屬性信息之后,方法還可 以包括獲取異常狀態(tài)的異常類型或者異常等級;根據(jù)異常類型或者異常等級對異常狀態(tài) 進行相應(yīng)的異常處理。進一步地,根據(jù)異常類型或者異常等級對異常狀態(tài)進行相應(yīng)的異常處理可以包 括比較異常等級是否在預(yù)定等級的范圍內(nèi),其中,當(dāng)異常等級在預(yù)定等級的范圍之內(nèi)時,
4逐層返回到該異常等級對應(yīng)的異常狀態(tài)進行異常處理,并顯示異常狀態(tài)對應(yīng)的屬性信息; 當(dāng)異常等級在預(yù)定等級的范圍之外時,在預(yù)定時間內(nèi)對該異常等級對應(yīng)的異常狀態(tài)進行異 常處理,該異常狀態(tài)的屬性信息在后臺添加。進一步地,顯示異常狀態(tài)對應(yīng)的屬性信息之前,方法還可以包括通過傳輸接口在 日志文件中記錄該異常狀態(tài)的屬性信息。進一步地,可以提供一個用戶界面讀取并顯示異常狀態(tài)對應(yīng)的屬性信息。為了實現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種異常處理的裝置。根據(jù)本發(fā)明的異常處理的裝置包括檢測模塊,用于檢測到指令中的一個或多個 異常狀態(tài);查找模塊,用于在指令異常狀態(tài)列表中查找異常狀態(tài)對應(yīng)的屬性信息,指令異常 狀態(tài)列表保存各個異常狀態(tài)的屬性信息,其中,屬性信息包括異常編號、異常類型、異常等 級、異常消息和異常解決方案;顯示模塊,用于顯示異常狀態(tài)對應(yīng)的屬性信息。進一步地,異常處理裝置還可以包括獲取模塊,用于獲取異常狀態(tài)的異常類型或 者異常等級;處理模塊,用于根據(jù)異常類型號或者異常等級對異常狀態(tài)進行相應(yīng)的異常處 理。進一步地,處理模塊可以包括比較模塊,用于比較異常等級是否在預(yù)定等級的范 圍內(nèi),其中,當(dāng)異常等級在預(yù)定等級的范圍之內(nèi)時,逐層返回到該異常等級對應(yīng)的異常狀態(tài) 進行異常處理,并顯示異常狀態(tài)對應(yīng)的屬性信息;當(dāng)異常等級在預(yù)定等級的范圍之外時,在 預(yù)定時間內(nèi)對該異常等級對應(yīng)的異常狀態(tài)進行異常處理,該異常狀態(tài)的屬性信息在后臺添 加。進一步地,裝置還可以包括保存模塊,用于通過傳輸接口在日志文件中記錄該異 常狀態(tài)對應(yīng)的屬性信息。進一步地,顯示模塊可以包括顯示界面,用于提供一個用戶界面讀取并顯示異常 狀態(tài)對應(yīng)的屬性信息。通過本發(fā)明,采用檢測到指令中的一個或多個異常狀態(tài);在指令異常狀態(tài)列表中 查找異常狀態(tài)對應(yīng)的屬性信息,指令異常狀態(tài)列表保存各個異常狀態(tài)的屬性信息;顯示異 常狀態(tài)對應(yīng)的屬性信息,解決了異常處理的過程復(fù)雜導(dǎo)致異常處理正確性低、效率低,以至 于軟件健壯性較差的問題,進而達(dá)到了快速準(zhǔn)確地定位到發(fā)生異常的地點,提高異常處理 的正確性和處理效率,便于軟件代碼維護,提高用戶的易用性和軟件健壯性的效果。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實施例的異常處理的裝置示意圖;圖2是根據(jù)本發(fā)明實施例的異常處理的方法流程圖。
具體實施例方式需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相 互組合。下面將參考附圖并結(jié)合實施例來詳細(xì)說明本發(fā)明。根據(jù)本發(fā)明的實施例,提供了 一種異常處理的裝置。
5
圖1是根據(jù)本發(fā)明實施例的異常處理的裝置示意圖。如圖1所示,該異常處理的 裝置包括檢測模塊11,用于檢測到指令中的一個或多個異常狀態(tài);查找模塊13,用于在指 令異常狀態(tài)列表中查找異常狀態(tài)對應(yīng)的屬性信息,指令異常狀態(tài)列表保存各個異常狀態(tài)的 屬性信息,其中,屬性信息包括異常編號、異常類型、異常等級、異常消息和異常解決方案; 顯示模塊15,用于顯示異常狀態(tài)對應(yīng)的屬性信息。本發(fā)明實施例中通過設(shè)置各種指令異常狀態(tài)的列表對各種指令異常的多個屬性 信息進行定義,在逐層返回的過程中根據(jù)查找模塊13獲取一個或多個屬性信息的組合,并 將異常狀態(tài)的各個屬性信息顯示給用戶,查找模塊13執(zhí)行的查找過程便于操作者查找異 常的拋出地點,以便后續(xù)進行正確的異常處理,即實現(xiàn)對異常狀態(tài)進行報錯。同時根據(jù)一個 或多個屬性信息的組合調(diào)用不同的處理方法來解決異常處理的過程復(fù)雜導(dǎo)致異常處理正 確性低、效率低,以至于軟件健壯性較差的問題。本發(fā)明的上述實施例便于軟件代碼維護, 提高了用戶的易用性和軟件健壯性。本發(fā)明中的異常屬性信息可以包括以下幾項異常編號、異常類型、異常等級、異 常消息和異常解決方案。其中,異常等級表示該異常的嚴(yán)重程度,按照嚴(yán)重程度對異常進行 劃分;異常消息為當(dāng)前異常發(fā)生時所攜帶的信息;異常解決方案表示當(dāng)前異常出現(xiàn)后對常 產(chǎn)生的原因進行分析并提示解決的方案。本發(fā)明的異常處理裝置還可以包括獲取模塊17,用于獲取異常狀態(tài)的異常類型 或者異常等級;處理模塊19,用于根據(jù)異常類型號或者異常等級對異常狀態(tài)進行相應(yīng)的異
常處理。上述實施例中優(yōu)選的,設(shè)計者可以根據(jù)多個屬性信息中的異常類型確定當(dāng)前異常 狀態(tài)的層,系統(tǒng)根據(jù)異常類型逐層返回到該層來調(diào)用下一步的異常處理方法;另外,設(shè)計者 也可以根據(jù)異常等級確定當(dāng)前異常狀態(tài)的層,該等級可以表征當(dāng)前異常的嚴(yán)重程度,對異 常較嚴(yán)重的異常狀態(tài)系統(tǒng)根據(jù)查詢結(jié)果優(yōu)先調(diào)用異常處理方法執(zhí)行異常處理。該實施例解 決了以往異常處理過程復(fù)雜、效率低的問題,可以快速確定異常的地點。本發(fā)明的處理模塊19可以包括比較模塊,該比較模塊用于比較異常等級是否在 預(yù)定等級的范圍內(nèi),其中,當(dāng)異常等級在預(yù)定等級的范圍之內(nèi)時,逐層返回到該異常等級對 應(yīng)的異常狀態(tài)進行異常處理,并顯示異常狀態(tài)對應(yīng)的屬性信息;當(dāng)異常等級在預(yù)定等級的 范圍之外時,在預(yù)定時間內(nèi)對該異常等級對應(yīng)的異常狀態(tài)進行異常處理,該異常狀態(tài)的屬 性信息在后臺添加。上述實施例優(yōu)選的將異常等級和設(shè)計者設(shè)定的預(yù)定等級進行比較判斷,當(dāng)異常 的嚴(yán)重等級超過預(yù)定范圍時,系統(tǒng)只在最高層的調(diào)用函數(shù)中顯示異常,即對符合預(yù)定范圍 內(nèi)的異常等級對應(yīng)的異常狀態(tài)進行異常函數(shù)的調(diào)用,而對底層的被調(diào)用函數(shù)不允許顯示異 常,只能添加異常和異常擴展信息。在異常拋出之后,上述裝置還可以包括保存模塊,用于通過傳輸接口在日志文件 中記錄該異常狀態(tài)對應(yīng)的屬性信息。該實施例中實現(xiàn)通過日志文件詳細(xì)記錄異常的詳細(xì)信 息,為最終的顯示異常等具體操作作準(zhǔn)備工作。本發(fā)明的顯示模塊可以提供一種顯示界面,用于提供一個用戶界面讀取并顯示異 常狀態(tài)對應(yīng)的屬性信息。采用用戶界面的顯示方式簡單、清晰,易用性高。圖2是根據(jù)本發(fā)明實施例的異常處理的方法流程圖。如圖1所示,該方法包括如下的步驟S202至步驟S206 步驟S202,通過圖1中的檢測模塊11檢測到指令中的一個或多個異常狀態(tài)。該步 驟為用戶操作過程中系統(tǒng)檢測到異常狀態(tài)。步驟S204,通過圖1中的查找模塊13在指令異常狀態(tài)列表中查找檢測模塊11檢 測到的異常狀態(tài)對應(yīng)的屬性信息,指令異常狀態(tài)列表保存各個異常狀態(tài)的屬性信息;其中, 屬性信息可以包括異常編號、異常類型、異常等級、異常消息和異常解決方案。步驟S206,通過圖1種的顯示模塊15將顯示查找模塊13獲取的異常狀態(tài)對應(yīng)的
屬性信息。上述實施例通過設(shè)置各種指令異常狀態(tài)的列表對各種指令異常的多個屬性信息 進行定義,步驟中的查找過程便于操作者查找異常的拋出地點,以便后續(xù)進行正確的異常 處理,即實現(xiàn)對異常狀態(tài)進行報錯,提高了后續(xù)異常處理的正確性和效率,便于用戶對軟件 代碼維護,提高了用戶的易用性和軟件健壯性。本實施例在指令異常狀態(tài)列表中查找異常狀態(tài)對應(yīng)的屬性信息之后,方法還可以 包括獲取異常狀態(tài)的異常類型或者異常等級;根據(jù)異常類型或者異常等級對異常狀態(tài)進 行相應(yīng)的異常處理。優(yōu)選的,根據(jù)異常類型或者異常等級對異常狀態(tài)進行相應(yīng)的異常處理可以包括 比較異常等級是否在預(yù)定等級的范圍內(nèi),其中,當(dāng)異常等級在預(yù)定等級的范圍之內(nèi)時,逐層 返回到該異常等級對應(yīng)的異常狀態(tài)進行異常處理,并顯示異常狀態(tài)對應(yīng)的屬性信息;當(dāng)異 常等級在預(yù)定等級的范圍之外時,在預(yù)定時間內(nèi)對該異常等級對應(yīng)的異常狀態(tài)進行異常處 理,該異常狀態(tài)的屬性信息在后臺添加。由上述可知在在多層的異常處理調(diào)用中,對發(fā)生的異常狀態(tài)加以詳細(xì)描述,即設(shè) 定異常狀態(tài)屬性信息,優(yōu)選的可以定義異常等級以及異常編號等宏,本發(fā)明實施例在異常 拋出時不在當(dāng)前層內(nèi)處理異常,把異常拋出到調(diào)用函數(shù)中,采用逐層返回到實際產(chǎn)生當(dāng)前 層異常的層獲取其異常處理函數(shù)。本實施例可以將異常分為若干類,如系統(tǒng)、文件操作、數(shù) 據(jù)庫操作、使用權(quán)限等,返回時可以同時返回異常類別和編號,針對不同的異常進行相應(yīng)的 異常處理。本發(fā)明實施例的操作的原則有兩點首先只有在函數(shù)自身內(nèi)部發(fā)生的異常狀態(tài), 才能添加異常,如果是調(diào)用其它函數(shù)發(fā)生了異常,則只在調(diào)用點添加附加信息并返回異常。 另外只在最高層(例如是在預(yù)定范圍內(nèi)的異常等級所對應(yīng)的異常所在的層)的調(diào)用函數(shù)中 顯示異常,底層(例如在預(yù)定范圍外的異常等級所對應(yīng)的異常所在的層)被調(diào)用函數(shù)不允 許顯示異常狀態(tài)的屬性信息,只能添加異常信息和異常擴展信息。其次調(diào)用函數(shù)返回的異 常需要全路徑處理,返回幾種異常就要處理幾種異常。這樣保證了產(chǎn)生異常的屬性信息不 會混淆,層級分明,逐層返回。本發(fā)明實施例中,在顯示異常狀態(tài)對應(yīng)的屬性信息之前,方法還可以包括通過傳 輸接口在日志文件中記錄該異常狀態(tài)的屬性信息。該實施例具體實施例是可以通過各個模塊將異常狀態(tài)的屬性信息記錄到日志中, 最終將異常狀態(tài)的屬性信息顯示。例如,采用一段計算機程序通過ICxErrorHandle接口處 理初始化異常日志環(huán)境、異常狀態(tài)的各個屬性信息從日志中讀寫、最終在界面中顯示異常 狀態(tài)的屬性信息等具體操作,具體的異常屬性信息則可以保存在ICxError接口中,即異常狀態(tài)的詳細(xì)信息記錄在日志文件中。同時本發(fā)明可以提供一個用戶界面讀取并顯示異常狀態(tài)對應(yīng)的屬性信息。該用戶 界面簡單直觀。從以上的描述中,可以看出,本發(fā)明實現(xiàn)了如下技術(shù)效果本發(fā)明提高了錯誤處理 的正確性,針對不同異常采取不同處理方式,提高軟件健壯性。提高了錯誤處理的效率,快 速準(zhǔn)確地定位到發(fā)生異常的地點,便于代碼維護。通過實際系統(tǒng)的運行,逐層返回機制的使 用使得軟件穩(wěn)定性得到了有效提高,同時對于定位錯誤和完善地進行錯誤處理取得了實際 效果。需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的 計算機系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不 同于此處的順序執(zhí)行所示出或描述的步驟。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲 在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們 中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的 硬件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
一種異常處理的方法,其特征在于,包括檢測到指令中的一個或多個異常狀態(tài);在指令異常狀態(tài)列表中查找所述異常狀態(tài)對應(yīng)的屬性信息,所述指令異常狀態(tài)列表保存各個所述異常狀態(tài)的所述屬性信息;顯示所述異常狀態(tài)對應(yīng)的所述屬性信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述屬性信息包括異常編號、異常類型、 異常等級、異常消息和異常解決方案。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在指令異常狀態(tài)列表中查找所述異常狀 態(tài)對應(yīng)的屬性信息之后,所述方法還包括獲取所述異常狀態(tài)的異常類型或者異常等級;根據(jù)所述異常類型或者所述異常等級對所述異常狀態(tài)進行相應(yīng)的異常處理。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,根據(jù)所述異常類型或者所述異常等級對 所述異常狀態(tài)進行相應(yīng)的異常處理包括比較所述異常等級是否在預(yù)定等級的范圍內(nèi),其中,當(dāng)所述異常等級在所述預(yù)定等級的范圍之內(nèi)時,逐層返回到該異常等級對應(yīng)的所述異 常狀態(tài)進行所述異常處理,并顯示所述異常狀態(tài)對應(yīng)的所述屬性信息;當(dāng)所述異常等級在所述預(yù)定等級的范圍之外時,在預(yù)定時間內(nèi)對該異常等級對應(yīng)的異 常狀態(tài)進行所述異常處理,該異常狀態(tài)的屬性信息在后臺添加。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在顯示所述異常狀態(tài)對應(yīng)的所述屬性信 息之前,所述方法還包括通過傳輸接口在日志文件中記錄該異常狀態(tài)的所述屬性信息。
6.根據(jù)權(quán)利要求1或5所述的方法,其特征在于,提供一個用戶界面讀取并顯示所述異 常狀態(tài)對應(yīng)的所述屬性信息。
7.一種異常處理的裝置,其特征在于,包括檢測模塊,用于檢測到指令中的一個或多個異常狀態(tài);查找模塊,用于在指令異常狀態(tài)列表中查找所述異常狀態(tài)對應(yīng)的屬性信息,所述指令 異常狀態(tài)列表保存各個所述異常狀態(tài)的所述屬性信息,其中,所述屬性信息包括異常編號、 異常類型、異常等級、異常消息和異常解決方案;顯示模塊,用于顯示所述異常狀態(tài)對應(yīng)的所述屬性信息。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括獲取模塊,用于獲取所述異常狀態(tài)的異常類型或者所述異常等級;處理模塊,用于根據(jù)所述異常類型號或者所述異常等級對所述異常狀態(tài)進行相應(yīng)的異 常處理。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理模塊包括比較模塊,用于比較 所述異常等級是否在預(yù)定等級的范圍內(nèi),其中,當(dāng)所述異常等級在所述預(yù)定等級的范圍之 內(nèi)時,逐層返回到該異常等級對應(yīng)的所述異常狀態(tài)進行所述異常處理,并顯示所述異常狀 態(tài)對應(yīng)的所述屬性信息;當(dāng)所述異常等級在所述預(yù)定等級的范圍之外時,在預(yù)定時間內(nèi)對 該異常等級對應(yīng)的異常狀態(tài)進行所述異常處理,該異常狀態(tài)的屬性信息在后臺添加。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括保存模塊,用于通過傳 輸接口在日志文件中記錄該異常狀態(tài)對應(yīng)的所述屬性信息。2
11.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述顯示模塊包括顯示界面,用于提供 一個用戶界面讀取并顯示所述異常狀態(tài)對應(yīng)的所述屬性信息。
全文摘要
本發(fā)明公開了一種異常處理的方法及裝置,其中,該方法包括檢測到指令中的一個或多個異常狀態(tài);在指令異常狀態(tài)列表中查找異常狀態(tài)對應(yīng)的屬性信息,指令異常狀態(tài)列表保存各個異常狀態(tài)的屬性信息;顯示異常狀態(tài)對應(yīng)的屬性信息。通過本發(fā)明,能夠快速準(zhǔn)確地定位到發(fā)生異常的地點,提高異常處理的正確性和處理效率,便于軟件代碼維護,提高用戶的易用性和軟件健壯性。
文檔編號G06F9/44GK101937372SQ201010267778
公開日2011年1月5日 申請日期2010年8月30日 優(yōu)先權(quán)日2010年8月30日
發(fā)明者付德平, 吳玲, 李海峰 申請人:北京數(shù)碼大方科技有限公司