當自定義異常處理,我通常從Exception繼承,然後添加一些字段/屬性,我的異常類來存儲一些額外的信息:我應該如何將數據存儲在自定義異常中?
public class MyException : Exception
{
public int ErrorCode{get;set;}
public MyException()
{}
}
在上面的例子中,ErrorCode
值存儲在異常,這意味着如果來自受保護的構造函數中的SerializationInfo
對象和重寫的GetObjectData
方法,我必須將其添加到並退出。
獲取一個提供有關異常的用戶定義的其他信息的鍵/值對的集合。
如果我存儲Data
裏面的錯誤代碼,它會得到由異常類我序列化(根據反射器),這意味着我的異常類現在看起來像:
public class MyException : Exception
{
public int ErrorCode
{
get {return (int) Data["ErrorCode"];}
set {Data["ErrorCode"] = value;}
}
public MyException()
{}
}
這意味着儘管在處理錯誤代碼的獲取/設置方面還有一些工作要做(例如處理錯誤代碼可能不在字典中的錯誤代碼和錯誤代碼的情況),但我不必擔心序列化/將其解串。
這是隻有兩個達到同樣的事情,不同的方式,還是一種方式有什麼明顯的優勢(S)比其他(除了那些我已經提到過)?