VERIFY()
служит для той же цели, что и ASSERT()
(или стандартная библиотека assert()
) - чтобы вы могли уловить вещи, которые на самом деле никогда не должны происходить ™ (т. Е. Настоящая ошибка кода) , то, что должно быть исправлено перед выпуском). Такие вещи, которые, если по какой-то причине выражение ложное, нет смысла продолжать, потому что что-то ужасно, ужасно неправильно.
Это отражается в том факте, что VERIFY()
останавливает программу только при ложной оценке при компиляции в режиме отладки - в режиме Release она прозрачна. Разница между VERIFY()
и ASSERT()
заключается в том, что VERIFY()
будет по-прежнему оценивать выражение в режиме Release, его просто не волнует результат - тогда как ASSERT()
полностью удаляется из программы при компиляции в режиме Release и таким образом, никаких побочных эффектов выражения внутри него не будет.
Исключения более полезны для вещей, которые могут пойти не так, но могут быть восстановлены, поскольку исключения могут обрабатываться другими частями программы.