try..catch之后的命令不起作用

时间:2011-03-02 15:50:53

标签: c++ mfc

我有一个try..catch的方法。 结构是这样的:

try
{
 commands...

}
catch(...)
{
    ERROR(...);
}
if(m_pDoc->m_bS = FALSE ) // Check here if AutoLogout event occurred.
    StartCollect();
}

该程序不会进入catch部分,但它也不会在稍后进入if语句。 可能是什么问题?为什么程序没有转到if语句?

由于

6 个答案:

答案 0 :(得分:6)

你的if陈述几乎肯定是错的。您将FALSE分配给bSilenClose,然后检查它是否为真,这将导致if的正文永远不会执行。在C ++中,相等性测试是==。另外,正如@Martin York指出的那样,尾随;将被视为你的if的正文。事实上,下面的大括号中的代码应该每次都执行。

if(m_pDoc->m_bSilenClose = FALSE );
                         ^       ^^^^ This should not be there. (Empty statement after if)
                         ^
                         ^ Assigning FALSE (should be == to test)
                           Condition always FALSE (thus never executes empty statement.

答案 1 :(得分:4)

只有在发生异常时才会调用

catch。至于为什么if语句中的东西没有被调用,要么:

  • 您的条件陈述错误
  • 你的捕获可能也会抛出异常(?)

编辑:注意到这是C ++。

答案 2 :(得分:1)

你抓到了什么?您的错误可能与您尝试捕获的错误不同。此外,Catch可能会抛出异常。

真实代码和更好的描述也总是有帮助;)

答案 3 :(得分:0)

逐行浏览调试器中的代码块(使用F10键)。您应该看到代码确实已到达if语句。

答案 4 :(得分:0)

你有一个错字

if(m_pDoc->m_bSilenClose = FALSE ); 

应该是:

if(m_pDoc->m_bSilenClose == FALSE ); 

答案 5 :(得分:0)

这就是我喜欢做的原因

if(FALSE == variable)

与常数

比较时