2011-02-03 130 views
5

我想知道在C++,Java,C#等編程語言的應用程序中處理錯誤的最佳方法是什麼。最佳實踐錯誤處理

我想創造一個地方存儲與錯誤和警告消息相關的數字。

例如:

10000 - > 「無法讀取文件」。 ... 20000 - >「緩衝區溢出」。 ... 80000 - >「關鍵的東西」。

我認爲將錯誤與數字進行映射是一種很好的做法。無論顯示哪種語言,都可以更容易地找到錯誤。你們有什麼想法?有沒有更好的方法來做到這一點?

另一點是,如何存儲它們,如何創建它們?

是一個很大的普遍枚舉一個很好的解決方案?我們是否必須將它們存儲在數據庫中?在一個文件中?

它應該是:

  • 容易找到代碼中的錯誤(即從數量)。
  • 容易添加新的錯誤(如果不在同一地點,不使用相同的錯誤編號兩次可能會非常棘手)。

你們怎麼看待這一切?

在此先感謝您的幫助和建議!

回答

6

使用錯誤代碼來識別異常並不是一個壞習慣。

它在生產環境中可以非常有用地保持日誌文件更短,並且還可用於使錯誤消息國際化。

另一方面,在開發時,如果接收到一個錯誤代碼而不是完整的錯誤消息並且有意義的描述,那麼可能會很煩人。開發人員必須查看錯誤代碼的內容。

在我的一個項目中(使用Java),我開發了一種混合方法。我的根異常有一個使用Enum類的構造函數。 Enum類包含錯誤代碼+默認錯誤消息的列表。喜歡的東西:

public enum ErrorCodes { 

    VALIDATION_ERROR(5001, "One of the objects cannot be validated"), 
    RESOURCE_NOT_FOUND(4004, "The requested resource does not exist"), 

的根異常也具有其他的構造,從而使開發人員可以重寫默認消息:

public CoreException(ErrorCodes _errorCode, final String message, final Throwable cause) { 
    super(message, cause); 
    errorCode = _errorCode.getCode(); 
} 


public CoreException(ErrorCodes _errorCode, final String message) { 
    super(message); 
    errorCode = _errorCode.getCode(); 
} 

當異常被捕獲的異常處理程序可以決定(根據一些配置設置)僅記錄錯誤和消息或錯誤。 更復雜的錯誤處理程序也可以根據錯誤代碼從資源包中以特定語言查找消息。

+0

是的,這正是我所期待的。我不想只顯示一個數字,找到相關的錯誤會是一件很痛苦的事情。但是我想爲用戶顯示數字和可理解的文本。這樣,如果在某個時候,我們獲得了一個外語文本的截圖,我們仍然有數字來匹配錯誤!實際上,我們正在考慮像您一樣的數字和默認文字。它以另一種方式實施,但這個想法仍然一樣!感謝您的回答! – 2011-02-03 09:18:42

0

不要這樣做。

我們有比C和FORTRAN更好的工具。

拋出異常並給出名稱。 C#和Java將提供調用堆棧。

C++可以告訴你異常的類型(只是幾乎沒有)

+2

生產監控如何?使用多個組件部署大型應用程序時,錯誤代碼非常重要。正常的生產環境監視日誌以查找特定的字符串(大多數情況下爲錯誤代碼)並根據這些字符串採取行動。另外,你真的想要結束數百個Exception類嗎? – 2011-03-22 14:25:35