参考使自定义 .NET 异常可序列化的正确方法是什么?
and 所有 .NET 异常都是可序列化的吗? ...
为什么我的异常应该是可序列化的?
有人说,如果第三方库定义的自定义异常不可序列化,“可以将其视为错误”。为什么?
为什么异常在这方面与其他类不同?
因为您的异常可能需要在不同的 AppDomain 之间进行编组,如果它们不能(正确)序列化,您将丢失宝贵的调试信息。与其他类不同,您无法控制您的异常是否会被编组——它会。
当我的意思是“你无法控制”时,我的意思是你创建的类通常具有有限的存在空间,并且其存在是众所周知的。如果它是一个返回值,并且有人试图在不同的 AppDomain(或不同的机器上)中调用它,他们会得到一个错误,并且只能说“不要那样使用它”。调用者知道他们必须将其转换为可以序列化的类型(通过包装方法调用)。然而,由于异常会冒泡到最顶层,如果没有被捕获,它们可能会超越 AppDomain 边界,您甚至不知道自己有这样的边界。您在不同 AppDomain 中深度 20 层的自定义应用程序异常可能是在 Main() 处报告的异常,并且一路上没有任何内容会将其转换为可序列化的异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)