Если утверждение не выполнено, программа должна аварийно завершить работу .
Неудачное утверждение означает, что программист допустил фундаментальную ошибку в своем понимании того, как возможно выполнение программы. Это помощь в целях развития, а не помощь в производстве. В производстве можно обрабатывать исключений , так как они "могут" возникнуть, тогда как утверждения не должны "никогда" потерпеть неудачу.
Если вы находитесь в лагере, который говорит: «О, но что, если утверждения потерпят неудачу в производстве? Мне нужно их поймать!» тогда вы упускаете суть. Спросите себя, в таком случае, почему вы просто не генерируете исключение (или иначе обрабатываете ошибку)?
Вообще говоря, assert - это , а не , просто сокращение для "если условие не выполнено, выбросить исключение" (ну, иногда это операционная семантика, но это не денотационная семантика) , Скорее, ошибка утверждения означает, что приложение находится в состоянии, в которое разработчик не верит, даже возможно . Вы действительно хотите, чтобы код продолжал выполняться в таком случае? Ясно (я бы сказал), Нет .