我有一个try..catch的方法。 结构是这样的:
try
{
commands...
}
catch(...)
{
ERROR(...);
}
if(m_pDoc->m_bS = FALSE ) // Check here if AutoLogout event occurred.
StartCollect();
}
该程序不会进入catch部分,但它也不会在稍后进入if语句。 可能是什么问题?为什么程序没有转到if语句?
由于
答案 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)
真实代码和更好的描述也总是有帮助;)
答案 3 :(得分:0)
逐行浏览调试器中的代码块(使用F10键)。您应该看到代码确实已到达if
语句。
答案 4 :(得分:0)
你有一个错字
if(m_pDoc->m_bSilenClose = FALSE );
应该是:
if(m_pDoc->m_bSilenClose == FALSE );
答案 5 :(得分:0)
这就是我喜欢做的原因
if(FALSE == variable)
与常数
比较时