如果while循环检查出错,会发生什么

时间:2013-09-03 17:24:05

标签: c++ error-handling while-loop

我有一段代码:

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块的内容?

2 个答案:

答案 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;