代码如何捕获异常

How code catches exceptions?

本文关键字:捕获异常 代码      更新时间:2023-10-16

代码如何捕获异常(try, catch(...))?

push 0FFFFFFFFh
...
mov eax, dword ptr fs:[00000000h]
...
mov dword ptr fs:[00000000h],eax  
mov dword ptr [ebp-10h],esp

这段代码在捕获异常的函数"头"中是什么意思?

mov dword ptr [ebp-4], 0

而这个(在"尝试"的头部)?函数没有任何局部变量。

功能:

int SUM(int a, int b)
{
    try{}
    catch(...){}
    return 0;
}

FS细分市场是什么商店?

存储在fs:[0]中的值是指向EXCEPTION_REGISTRATION结构链表的指针。阅读此处了解更多详情:

关于 Win32 结构化异常处理深度的速成课程,MSJ 1997 年 1 月

MSVC 如何实现异常(在 x86 上):https://www.openrce.org/articles/full_view/21

这包括SEH(__try/__catch/__finally)和C++(try/catch)异常实现。

MSVC (x64) 和 GCC (Linux/iOS) 如何实现异常处理:http://www.hexblog.com/?p=704