На этом шаге мы приведем ответ на этот вопрос.
Теперь вы, вероятно, озадачитесь, почему в предыдущем примере просто не применить инструкцию if и исключение.
Дело в том, что инструкция assert предназначена для того, чтобы сообщать разработчикам о неустранимых ошибках в программе. Инструкция assert не предназначена для того, чтобы сигнализировать об ожидаемых ошибочных условиях, таких как ошибка "Файл не найден", где пользователь может предпринять корректирующие действия или просто попробовать еще раз.
Инструкции призваны быть внутренними самопроверками (internal selfchecks) вашей программы. Они работают путем объявления неких условий, возникновение которых в вашем исходном коде невозможно. Если одно из таких условий не сохраняется, то это означает, что в программе есть ошибка.
Если ваша программа бездефектна, то эти условия никогда не возникнут. Но если же они возникают, то программа завершится аварийно с исключением AssertionError, говорящим, какое именно "невозможное" условие было вызвано. Это намного упрощает отслеживание и исправление ошибок в ваших программах.
А пока имейте в виду, что инструкция assert - это средство отладки, а не механизм обработки ошибок времени исполнения программы. Цель использования инструкции assert состоит в том, чтобы позволить разработчикам как можно скорее найти вероятную первопричину ошибки. Если в вашей программе ошибки нет, то исключение AssertionError никогда не должно возникнуть.
Давайте взглянем поближе на другие вещи, которые мы можем делать с инструкцией assert, а затем разберем две распространенные ловушки, которые встречаются во время ее использования в реальных сценариях.
На следующем шаге мы рассмотрим синтаксис инструкции assert.