Раздел 45 · Python backend: Тарбадель

Ошибки как значения: Result

middle-senior~35 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Подделка 0308 из прошлого урока лежит в корзине: её больше нельзя записать. Следующую Лорра достаёт не из стопки, а из отчёта сверки, который Квот сдал вчера вечером. В отчёте строка «сверено». Контракта 0309 в нём нет вовсе.

Ничего не упало, в этом и беда. В записи 0309 сумма была словом. Разбор контракта бросил исключение в самом нижнем слое, оно пролетело сквозь проверку подписи и подсчёт суммы и тихо умерло в except Квота. Отчёт честно сложил оставшееся. Подделка прошла не потому, что её не поймали, а потому, что пойманную ошибку выбросили.

Исключение это второй выход из функции, которого нет в её сигнатуре. Подпись -> Contract обещает контракт и молчит о том, что вместо него может вылететь ContractError. mypy читает подписи и не знает про этот выход, поэтому не заставит никого его обработать. В этом уроке ошибка станет обычным значением в сигнатуре, которое нельзя забыть, и ты увидишь, где исключения всё-таки остаются правильным выбором.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.