C#中的异常是如何工作的(幕后)?

20

与 "C++ 异常是如何工作的(背后的过程)" 相同,但是针对的是 C#

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

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

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

2个回答

4

3

.NET异常使用底层的Windows结构化异常处理实现,但这并非必须。Mono可能采用不同的方式。

事实上,如果您编写一个仅抛出异常的单行控制台应用程序,并在Windbg中运行它,您将看到钩入未受管控异常处理的过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接