C# 异常处理程序如何在堆栈的框架上注册?

C# 异常处理程序如何在堆栈的框架上注册?,c#,C#,有人知道关于堆栈框架上异常句柄的细节或内存布局的文章吗?实现细节隐藏得很好。Brumme的博客和Rotor源代码都没有给出现成的答案。我知道的一件事是try语句不会生成任何代码。这几乎没有什么可行的办法。我认为它的实现方式与64位Windows中的SEH相同 我相信JIT编译器会生成一个代码地址表,其中包含一个指向异常过滤器的函数指针,该过滤器在处理异常时被调用。throw语句调用堆栈遍历,该遍历查看方法返回地址。该表将返回地址映射到相应的异常筛选器。异常筛选器决定异常是否与方法中的catch子

有人知道关于堆栈框架上异常句柄的细节或内存布局的文章吗?

实现细节隐藏得很好。Brumme的博客和Rotor源代码都没有给出现成的答案。我知道的一件事是try语句不会生成任何代码。这几乎没有什么可行的办法。我认为它的实现方式与64位Windows中的SEH相同

我相信JIT编译器会生成一个代码地址表,其中包含一个指向异常过滤器的函数指针,该过滤器在处理异常时被调用。throw语句调用堆栈遍历,该遍历查看方法返回地址。该表将返回地址映射到相应的异常筛选器。异常筛选器决定异常是否与方法中的catch子句匹配。并将控制权转移到catch子句中的代码。值得注意的是,VisualBasic的Catch-When语句(在C#中不可用)与在Windows中实现SEH的方式非常匹配


我没有这方面的证据,也不知道任何权威来源。这只是一种可能的工作方式。

实现细节隐藏得很好。Brumme的博客和Rotor源代码都没有给出现成的答案。我知道的一件事是try语句不会生成任何代码。这几乎没有什么可行的办法。我认为它的实现方式与64位Windows中的SEH相同

我相信JIT编译器会生成一个代码地址表,其中包含一个指向异常过滤器的函数指针,该过滤器在处理异常时被调用。throw语句调用堆栈遍历,该遍历查看方法返回地址。该表将返回地址映射到相应的异常筛选器。异常筛选器决定异常是否与方法中的catch子句匹配。并将控制权转移到catch子句中的代码。值得注意的是,VisualBasic的Catch-When语句(在C#中不可用)与在Windows中实现SEH的方式非常匹配


我没有这方面的证据,也不知道任何权威来源。这只是一种可能的工作方式。

上下文是什么?你能提供更多的信息吗?从以下内容开始:什么是上下文?请您提供更多信息。请阅读以下内容: