Выявление причин ошибок
Обновлен: Ноябрь 2007
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Экспресс-выпуск |
![]() |
![]() |
Только машинные коды |
![]() |
Standard |
![]() |
![]() |
Только машинные коды |
![]() |
Pro и Team |
![]() |
![]() |
Только машинные коды |
![]() |
Обозначения:
![]() |
Применяется |
![]() |
Неприменимо |
![]() |
Команда или команды скрытые по умолчанию. |
Утверждения также можно применять для выявления причин ошибок в том месте кода, где эти ошибки должны обрабатываться. В следующем примере графическая программа возвращает код ошибки или ноль при успешном завершении.
myErr = myGraphRoutine(a, b);
/* Code to handle errors and
reset myErr if successful */
ASSERT(!myErr); -- MFC version
_ASSERT(!myErr); -- CRT version
Если код, обрабатывающий ошибку, работает правильно, ошибка будет обработана и myErr сбросится в ноль, не доходя до утверждения. Если myErr будет с другим значением, сработает утверждение, программа остановится и появится Диалоговое окно "Сбой проверочного утверждения".
Однако операторы утверждения все же не заменяют кода обработки ошибок. Следующий пример показывает, как оператор утверждения может привести к проблемам в окончательной версии программы:
myErr = myGraphRoutine(a, b);
/* No Code to handle errors */
ASSERT(!myErr); // Don't do this!
_ASSERT(!myErr); // Don't do this, either!
Этот код основан на операторе утверждения для обработки условия ошибки. В результате любой код ошибки, возвращенный myGraphRoutine, не будет обработан в окончательном выпуске программы.