今天探索一些遗留代码很有趣。碰到这个小数字:
function Func1()
{
DWORD dwError;
try
{
dwError = 1;
throw "Hey!";
} catch (LPCTSTR szError)
{
Log("Log1: %d", dwError);
SetLastError(dwError);
throw szError;
}
}
function Func2()
{
try {
Func1();
}
catch (LPCTSTR szError)
{
DWORD dwLastError = GetLastError();
Log("Log2: %d", dwLastError); ///OMG is 0!
}
}
GetLastError()
返回0!这是为什么?这些功能实际上比这要复杂一些。它们确实在堆栈中包含了一些东西(DWORD、CString、BYTE[])。我应该寻找什么?
日志看起来像:
日志1:1
日志2:0