为什么我应该始终将异常设置为[可序列化]? (。网)

2023-12-14

参考使自定义 .NET 异常可序列化的正确方法是什么?
and 所有 .NET 异常都是可序列化的吗? ...

为什么我的异常应该是可序列化的?
有人说,如果第三方库定义的自定义异常不可序列化,“可以将其视为错误”。为什么?

为什么异常在这方面与其他类不同?


因为您的异常可能需要在不同的 AppDomain 之间进行编组,如果它们不能(正确)序列化,您将丢失宝贵的调试信息。与其他类不同,您无法控制您的异常是否会被编组——它会。


当我的意思是“你无法控制”时,我的意思是你创建的类通常具有有限的存在空间,并且其存在是众所周知的。如果它是一个返回值,并且有人试图在不同的 AppDomain(或不同的机器上)中调用它,他们会得到一个错误,并且只能说“不要那样使用它”。调用者知道他们必须将其转换为可以序列化的类型(通过包装方法调用)。然而,由于异常会冒泡到最顶层,如果没有被捕获,它们可能会超越 AppDomain 边界,您甚至不知道自己有这样的边界。您在不同 AppDomain 中深度 20 层的自定义应用程序异常可能是在 Main() 处报告的异常,并且一路上没有任何内容会将其转换为可序列化的异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我应该始终将异常设置为[可序列化]? (。网) 的相关文章

随机推荐

  • 如果行值重复,则将其替换为空字符串

    如果发现重复值 是否可以用空字符串替换行值 例如 SELECT ProductCode Color FROM Product ProductCode Color 00A0B Red 00A0B Blue 00A0C Red 00A0C Bl
  • 将 PyInstaller 用于 Matplotlib 脚本后出错

    在我的代码中我使用 import matplotlib pyplot as plt import matplotlib image as mpimg 当我构建 py 脚本时 一切正常 但是使用 pyinstaller exe 获取可执行文件
  • 如何从MSTest获取测试结果状态?

    在 NUnit 中 我可以从以下位置获取测试结果context Result State 如果它是NUnit Framework TestState Success 那么我就知道测试通过了 在 MSTest 中 我如何获取该信息 I saw
  • “await”运算符只能在异步 lambda 表达式中使用

    我有一个 C Windows 应用商店应用程序 我正在尝试启动一个MessageDialog当其中一个命令按钮位于另一个命令按钮内时MessageDialog被点击 这样做的目的是警告用户他们的内容尚未保存 如果他们单击 取消 则会提示他们
  • Salesforce 中的 Web 选项卡

    我想知道我应该如何处理以下问题 我想要做的是在 salesforce 选项卡中显示我们的数据表 表数据将来自我们商店中的数据库 我还希望能够在搜索销售人员帐户时将数据传递到页面 选项卡 以查找信息 这可能吗 如果是这样 关于如何完成这项工作
  • 循环访问 VBA 用户窗体中的复选框控件

    我有一个 Excel VBA 中的用户表单 每个月都有一个复选框 选择一个或多个会导致所需的月份显示在工作表上 我将代码复制粘贴了 12 次并且它有效 但我确信有更好的方法For loop 这是我的代码的一部分 它持续了 12 次 If C
  • 绑定与箭头函数(在 JavaScript 中,或用于响应 onClick)

    所以我正在努力学习JavaScript and or react理解有点混乱 bind this 在构造函数中 然而 我想现在明白了 只是想知道 为什么有人会使用 Binding 与 Arrow functionJavaScript 或在o
  • 如何在 Android 中将默认 Facebook 应用程序登录会话添加到我们的应用程序中?

    我想从我的应用程序登录 Facebook 并且我已经成功完成了 但我希望 如果 Facebook 默认应用程序在我的设备中并且我已经登录 那么它会自动登录到我的应用程序 我无法理解如何获得默认的 Facebook 登录会话 如果有人有任何想
  • 了解边距折叠

    我已经成功地将 h2 元素的边距包含在其容器 section 元素 中 这样它就不会与 p 元素的边距一起折叠 我已经通过设置来完成此操作overflow节元素的auto 我的问题是 由于元素与overflow设置为除visible不能让它
  • php中curl如何发送参数

    我如何在curl php中编写以下命令 卷曲 XPOSThttps apiv2 unificationengine com v2 message send 数据 消息 接收者 姓名 TO NAME 地址 TO EMAILADDRESS 连接
  • CSS 媒体查询可检测设备类型(无论大小)

    我一直在研究媒体查询 但到目前为止 我在谷歌和 Stack Overflow 上找到的所有示例都是使用特定尺寸 max width max device width等 这样做的问题是它没有给我所需的灵活性 我希望能够为台式机和平板电脑提供
  • Firefox SDK 示例附加导出的 XPI 操作按钮不显示

    所以我在这里遵循文档 教程 https developer mozilla org en US Add ons SDK Tutorials Getting started 当我使用 cfx run 时 该插件显示正确 但当我导出到 xpi
  • 移动和消失的代码行; Eclipse 的 XML 编辑器出现问题

    有时我的代码会自行移动或直接消失在 Eclipse XML 编辑器中 当我突出显示受影响的代码时 突出显示的行会尝试自行更正 但是 当我向相反方向滚动或拖动鼠标时 代码会再次发生变化 本质上我会重复 缺失 and从原本没有错误的文件中显示断
  • 以编程方式创建 Azure 推送通知中心

    MSDN 文档中写道 Azure 支持将通知中心作为 Microsoft ServiceBus dll 程序集中的 Azure SDK 2 1 的一部分 您现在可以以编程方式创建 更新和删除通知中心 管理设备注册 以及向所有平台 Windo
  • 使用 mongoDB 创建递增数字

    我们有一个订单系统 每个订单都有一个 ID 出于会计目的 我们需要一种方法来生成数字递增的发票 在不使用 sql 数据库的情况下执行此操作的最佳方法是什么 我们正在使用节点来实现该应用程序 http www mongodb org disp
  • Chromedriver 76 破坏了我的测试套件“javascript 错误:循环引用”

    现在 每当我尝试单击公司 Web 应用程序上的任何元素时 都会收到 javascript 错误 循环引用 会话信息 chrome 76 0 3809 100 这是在以前的 chromedriver 版本上运行良好的代码 我已经尝试了链接到的
  • python pandas - 使用 for 循环编辑多个 DataFrame

    考虑以下 2 个包含 3 个字典和 3 个空 DataFrame 的列表 dict0 actual 2013 02 20 13 30 00 0 93 dict1 actual 2013 02 20 13 30 00 0 85 dict2 a
  • Linux 内核需要多少条指令才能处理 ARM Cortex A9 上的中断?

    我想估计一下需要的操作码数量ARM cortex A9单核处理IRQ 假设我使用 Linux 内核3 4 调用需要多少个操作码irq并执行irq handler 您的问题与如何计算有关中断延迟Linux 的 至少您可能会对中断开始之前需要多
  • 在 JavaScript 中将 float 值转换为 uint8 数组

    我有一个 Float32Array 其中包含音频文件中的值 我想将其保存为 wav 文件 因此我需要将该值转换为 Uint8array 为了从 uint8 转换为 float 我首先转换为 int16 数组 然后转换为 Float32Arr
  • 为什么我应该始终将异常设置为[可序列化]? (。网)

    参考使自定义 NET 异常可序列化的正确方法是什么 and 所有 NET 异常都是可序列化的吗 为什么我的异常应该是可序列化的 有人说 如果第三方库定义的自定义异常不可序列化 可以将其视为错误 为什么 为什么异常在这方面与其他类不同 因为您