c# - 异常如何在 C# 中工作(在幕后)

标签 c# .net exception try-catch throw

与“How do exceptions work (behind the scenes) in C++”相同,但适用于 C#

我知道抛出异常时必须执行以下步骤。

  1. 为异常类型找到最近的处理程序;
  2. 将堆栈展开到处理程序级别;
  3. 调用处理程序;
  4. 查找并调用每个 finally block 。

.NET 如何处理这些操作? “当前”处理程序的映射如何工作? try/catch block 中发出了多少代码?在 throw block 中?

最佳答案

Windows 上的 .NET 异常使用操作系统的底层 Structured Exception Handling (SEH) 机制,与 native 代码相同。如 linked question for C (and C++) 中所列.

关于c# - 异常如何在 C# 中工作(在幕后),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3761446/

相关文章:

c# - 如何获得进程所有者的用户名?

c# - 将对象反序列化为自身

c# - DataReader - 硬编码序数?

c# - public static vs static public - 有区别吗?

java - ArrayList越界异常?

c# - 如何在 C# 中将实例变量视为另一种类型的实例

c# - 阻止任务继续

java.lang.Exception : Error while transmitting data how to solve this error

c# - .NET ApplicationSettingsBase 我应该在每次加载时调用 Upgrade() 吗?

c# - 吞下未处理的异常(调试器除外)