【问题标题】:How do exceptions work (behind the scenes) in C#异常如何在 C# 中工作(在幕后)
【发布时间】:2011-04-15 06:09:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# .net exception try-catch throw


    【解决方案1】:

    .NET 异常使用底层的 Windows 结构化异常处理实现,尽管这不是要求。 Mono 可能会有所不同。

    实际上,如果您编写一个仅引发异常的单行控制台应用程序,然后在 Windbg 中运行它,您将看到非托管异常处理的挂钩。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2010-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-16
        • 2010-12-28
        • 1970-01-01
        相关资源
        最近更新 更多