2008-09-25 76 views
4

我需要對我如何分類和處理錯誤/異常「優雅地」進行標準化。標準化錯誤分類和處理

我目前正在使用一個過程,通過它將錯誤報告給傳遞錯誤號,嚴重性代碼,位置信息和extra-info-string的函數。如果錯誤是致命的並且應用程序應該死亡,則此函數返回布爾值true,否則返回false。作爲其過程的一部分,除了對用戶的視覺反饋之外,該功能還會記錄超過某個嚴重級別的錯誤。

錯誤編號索引一個字符串數組,解釋錯誤類型,例如:'文件訪問','用戶輸入','線程創建','網絡訪問'等。嚴重性代碼是二進制或0,1,2或4,0 =信息性的,1 = user_retry,2 = cannot_complete,4 = cannot_continue。 Location-info是模塊&函數,Extra-info是參數和局部變量值。

我想把它變成一種標準的錯誤處理方式,我可以把它放在一個庫中並在所有的應用程序中重新使用。我主要在Linux上使用C/C++,但也希望將結果庫與其他語言/平臺一起使用。

  • 一個想法是延長 錯誤類型的數組,表示對於給定的嚴重性級別的一些默認 行爲, 而應此則成爲所採取的 行動,並給 沒有選項的用戶?

  • 或者:是否應將此擴展名設爲 用戶 需要從中選擇的選項子陣列? 的問題在於,必須將 的選項概括爲 與編程相關的選項,可能會很好地完全阻止最終用戶 。

  • 或者:應該使用沿着自身的 陣列錯誤或默認 行爲的 錯誤的lib常規通每個應用程序 - 但是這將擊敗庫的 目的...

  • 或者:應該在每個應用中處理嚴重性級別爲 ?

或者:你有什麼建議?你如何處理錯誤?我該如何改進?

+0

你使用哪種語言? – 2008-09-25 05:34:24

+0

C/C++(在Linux上) - 我會把答案放在已編輯的問題中,但是我的目標是用於任何語言的庫(我也使用perl,彙編器,php,...) – slashmais 2008-09-25 07:18:43

回答

1

如何處理錯誤確實取決於應用程序。Web應用程序具有與「桌面應用程序」不同的錯誤捕獲機制,並且這兩種方法與異步消息傳遞系統截然不同。

這就是說,錯誤處理中的一種常見做法是在可以處理的最低級別處理它。這通常意味着應用程序層或GUI。

我喜歡嚴重程度。也許你可以擁有一個帶有不同錯誤輸出提供程序和嚴重級別提供程序的可插入錯誤收集庫。

輸出提供者可能包含諸如logginProvider和IgnoreErrorsProvider之類的東西。 嚴重性提供程序可能是由每個項目執行的內容,因爲嚴重性級別通常由該類型的項目在其中發生。(例如,銀行應用程序的網絡連接問題比聯繫人管理系統更嚴重)。