当自定义异常处理,我通常从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)比其他(除了那些我已经提到过)?