Свои исключения: raise
Иногда программа должна сама сообщить об ошибке — для этого есть raise. Разберём, зачем и как им пользоваться.
Зачем вызывать ошибку самому
Если функция получила заведомо неверные данные (отрицательный возраст, пустое имя), правильнее сразу сообщить об ошибке, а не считать дальше с мусором. raise останавливает выполнение и передаёт ошибку тому, кто вызвал функцию.
def set_age(age):
if age < 0:
raise ValueError('Возраст не может быть отрицательным')
return age
Как это работает
raise создаёт исключение с понятным сообщением. Вызывающий код может поймать его через try/except и обработать, либо программа остановится с этим сообщением. Так ошибка не теряется и не превращается в тихий баг.
Свои типы ошибок
Для крупных программ создают собственные классы исключений (наследуя от Exception), чтобы называть ошибки по смыслу. Новичку это редко нужно — на старте достаточно raise со встроенными типами вроде ValueError.
Частые вопросы
Зачем самому вызывать ошибку? Чтобы честно сообщить о неверных данных, а не продолжать с ними.
Какой тип выбрать? Для неверного значения — ValueError; свои типы нужны в больших проектах.
Начать игру бесплатно