Вы должны использовать утверждения, когда единственным случаем, в котором они нарушаются, является ошибка в логике программы.Вы используете обычные if
- then
- else
условия для вещей, которые действительно могут произойти из-за ввода или возможных внешних условий (т. Е. Отсутствует файл).
Когда вы точно знаете, что программалогика неверна, на самом деле нет особого смысла пытаться продолжить выполнение ... ваша программа работает не так, как вы думаете (потому что в противном случае утверждение не сработало бы), и поэтому лучший вариант - просто кричать, в чем проблемаis и немедленно умирают.
Часто утверждения удаляются, когда код компилируется в режиме «релиза», даже если, тем не менее, может иметь смысл сохранять их на месте, если логика программы очень сложна и если продолжение выполнения приводит к неправильному выполнениювывод будет создавать большие проблемы, чем остановка выполнения.
Обратите внимание, что «ловушка», в которую иногда начинающие программисты попадают с утверждением, состоит в том, что когда код подтверждения удаляется для режима выпуска, выражение внутри утверждения не оценивается.больше, ипоэтому, если ваша программа зависит от побочных эффектов этого выражения, то у вас будут проблемы ... например:
...
assert(insert_record(db, data) == DB_OK); // <== this is bad
...
, когда утверждение определено, вставка не произойдет вообще, оставляя васс программой, которая не работает в режиме выпуска и работает вместо этого, когда вы пытаетесь отладить проблему.