команды после try..catch не работают - PullRequest
2 голосов
/ 02 марта 2011

У меня есть метод с try..catch. структура такая:

try
{
 commands...

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

Программа не входит в секцию catch, но она также не входит в оператор if позже. В чем может быть проблема? Почему программа не переходит к оператору if?

Спасибо

Ответы [ 6 ]

6 голосов
/ 02 марта 2011

Ваше if утверждение почти наверняка неверно.Вы присваиваете FALSE для bSilenClose, а затем проверяете, истинно ли оно (false), что приведет к тому, что тело вашего 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.
4 голосов
/ 02 марта 2011

catch будет вызываться только в случае возникновения исключения.Относительно того, почему материал в операторе if не вызывается, либо:

  • ваше условное утверждение неверно
  • ваш улов тоже может вызывать исключение (?)

Редактировать: только что заметил, что это C ++.

1 голос
/ 02 марта 2011

Что вы ловите?Ваша ошибка может быть другого типа, чем ошибка, которую вы пытаетесь поймать.Кроме того, Catch может выдавать исключение.

Реальный код и лучшее описание всегда помогают;)

0 голосов
/ 02 марта 2011

Вот почему я предпочитаю делать

if (FALSE == переменная)

При сравнении с константой

0 голосов
/ 02 марта 2011

У вас есть опечатка

if(m_pDoc->m_bSilenClose = FALSE ); 

должно быть:

if(m_pDoc->m_bSilenClose == FALSE ); 
0 голосов
/ 02 марта 2011

Пройдите блок кода в отладчике построчно (используйте клавишу F10).Вы должны увидеть, что код действительно получает оператор if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...