添加到SqlException.Data集合中的对象是否需要[可序列化]?
时间:2020-03-06 14:59:54 来源:igfitidea点击:
添加到SqlException.Data集合中的对象是否需要[可序列化]?
解决方案
好吧,严格来说,不...我们可以将任何类型添加到Exception的Data字典中...但是我们为什么要问?我们认为它们将跨越什么边界?
如果异常将跨应用程序域边界传播,则异常及其包含的数据需要可序列化。
一种这样的场景是通过远程通信的客户端-服务器应用程序。如果服务器抛出异常,并且需要在客户端进行处理,则框架将不得不对其进行序列化/反序列化。
是的,他们必须是。这是因为ISerializable的Exception类型实现将Data属性添加到StreamingContext中。并且Data属性(它是IDictionary)中的所有对象都必须可序列化。
即使不打算构建分布式应用程序,让异常类和实例可序列化也是一个好习惯。