gpt4 book ai didi

c# - 所有 .NET 异常都可以序列化吗?

转载 作者:IT王子 更新时间:2023-10-29 04:13:38 30 4
gpt4 key购买 nike

是否可以序列化所有 .NET 异常对象?

最佳答案

是也不是。正如 Jeff 和其他人所指出的,所有异常类都应该而且几乎总是可序列化的。如果遇到不可序列化的特定异常类,则很可能是错误。

但是在考虑可序列化性时,您需要同时考虑直接类和属于该类型成员的所有类型(这是一个递归过程)。基异常类有一个 Data IDictionary 类型的属性。这是有问题的,因为它允许您或任何其他人将任何对象添加到异常中。如果此对象不可序列化,则 Exception 的序列化将失败。

Data 属性的默认实现会进行一些基本检查以确保添加的对象是可序列化的。但它在几个方面存在缺陷

  • 仅对类型的可序列化性进行顶级检查,并且此检查仅通过检查 Type.IsSerializable(不是 100% 可靠检查)来完成。
  • 该属性(property)是虚拟的。派生的异常类型可以覆盖并使用执行 0 检查的哈希表。

关于c# - 所有 .NET 异常都可以序列化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/342528/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com