我有一段代码:
HANDLE hProcess;
DWORD dwExitCode;
DWORD dwDelay;
while (GetExitCodeProcess(hProcess, &dwExitCode))
{
if (STILL_ACTIVE == dwExitCode)
{
Sleep(dwDelay);
}
else
{
strMsg.Format("Process completed with exit code %d", dwExitCode);
LogComment(strMsg);
return;
}
}
dwExitCode = GetLastError();
strMsg.Format("Error %d getting exit code.", dwExitCode);
LogComment(strMsg)
这会有用吗?我的问题基本上是,如果在函数调用中获取while
循环的表达式时出错,它是否会从该循环中反弹并让我捕获错误?或者我是否需要为此设置类似try...catch
块的内容?
答案 0 :(得分:2)
如果错误指的是异常,那么如果你没有把它放在try/catch
区块中,那么它会从那里反弹出来。
答案 1 :(得分:1)
根据MSDN上的GetExitCodeProcess
Return value
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
如果此函数返回0,即特别是GetExitCodeProcess()调用以某种方式失败,那么是的,你的循环将终止。
while (GetExitCodeProcess())
装置
while (GetExitCodeProcess() == true)
或 while(GetExitCodeProcess()!= 0)
[这两个陈述是等同的;零是假,非零是真的]
相当于:
for ( ; ; ) {
auto gecpResult = GetExitCodeProcess(...);
if (gecpResult == 0)
break;