C++ EH Exception是Windows系统VC++里对c++语言的throw的分类和定义,它的代码就是0xe06d7363。在VC++里其本质也是SEH结构化异常机制。在我们分析用户崩溃的例子中经常会遇到它。一般情况下,遇到它,是我们代码里用throw抛出异常后没有处理导致程序崩溃。下面分析一下它的原理。

我们借助一段代码来跟踪和分析

classMyException
{
public:intnErr;char *szMessage;public:
MyException(
void)
:nErr(
0)
, szMessage(NULL)
{

}

MyException(
int nerr,char *szMess)
:nErr(nerr)
, szMessage(szMess)
{

}
~MyException(void)
{

}
};
int _tmain(int argc, _TCHAR*argv[])
{
try
    {
        MyException me(1, "test exception");
        throw me;
    }
    catch (MyException me1)
    {
        printf("err=%s\n",me1.szMessage);
    }
}

标签: none

添加新评论