try-throw-catch&&windows异常处理
C++的异常处理和windows的异常处理一点关系也没有,以下代码可以说明
代码
#include <iostream.h>
#include <windows.h>
LONG WINAPI myfi(LPEXCEPTION_POINTERS t)
{
DWORD p;
_asm
{
call l1
l1:
pop eax
mov p,eax
}
cout<<"1:"<<hex<<p<<endl;
return EXCEPTION_EXECUTE_HANDLER;
}
void main()
{
LPTOP_LEVEL_EXCEPTION_FILTER old;//如果把这里去掉程序就报错了
old=::SetUnhandledExceptionFilter(myfi);//如果把这里去掉程序就报错了
try
{
_asm
{
mov eax,0
mov ebx,1
mov [eax],ebx
}
}
catch(DWORD e)
{
DWORD p;
_asm
{
call l1
l1:
pop eax
mov p,eax
}
cout<<"2:"<<hex<<p<<endl;
}
}
#include <windows.h>
LONG WINAPI myfi(LPEXCEPTION_POINTERS t)
{
DWORD p;
_asm
{
call l1
l1:
pop eax
mov p,eax
}
cout<<"1:"<<hex<<p<<endl;
return EXCEPTION_EXECUTE_HANDLER;
}
void main()
{
LPTOP_LEVEL_EXCEPTION_FILTER old;//如果把这里去掉程序就报错了
old=::SetUnhandledExceptionFilter(myfi);//如果把这里去掉程序就报错了
try
{
_asm
{
mov eax,0
mov ebx,1
mov [eax],ebx
}
}
catch(DWORD e)
{
DWORD p;
_asm
{
call l1
l1:
pop eax
mov p,eax
}
cout<<"2:"<<hex<<p<<endl;
}
}
使用SetUnhandledExceptionFilter设置的异常OD没法跟踪吗?