Типичные улучшения

Для поиска по тегу начните название тега с символа '@'.

Улучшения, показаны 15 из 15.

Сделайте except избирательным

Когда вы не указываете какое исключение хотите перехватить, то перехватываются все. Если в блоке кода …

Отложите перехват исключения

В работе с исключениями всегда следуйте правилу **«Бросай рано, обрабатывай поздно»**. Порой это контринтуитивно — …

Сделайте скрипт устойчивым к разрыву соединения

Если долго держать открытым соединение с сервером, то рано или поздно случится обрыв: админ перезапустит …

Не переизобретайте механизм исключений

Когда-то в программах не было исключений и их код был усыпан бесконечными проверками — удачно …

Введите свой тип исключений

Если программа сообщает о проблеме с помощью исключения `Exception('что-то случилось')`, то перехватить его будет сложно. …

Вынесите решение проблемы наружу функции

Порой функция обещает вернуть полезные данные, но сделать этого не может — не нашла файл, …

Отпустите CancelledError

Когда asyncio закидывает внутрь корутины `CancelledError`, то ожидает что исключение всплывет вверх по стеку вызовов …

Обработайте MultipleObjectsReturned

При вызове метода `QuerySet.get` помимо исключения `DoesNotExist` возможна еще одна ситуация — вместо одной записи …

Обработайте DoesNotExist

При вызове метода `QuerySet.get(…)` может так случиться, что искомой записи в базе не будет, и …

Исправьте реакцию на ReadTimeout в long polling запросе

Исключение `ReadTimeout` возникает если сервер не отвечает так долго, что клиент, не дождавшись, сам разрывает …

Предупредите код снаружи функции о проблеме

Если функция не справилась со своей задачей, то внешнему коду полезно об этом знать. Вдруг, …

Проверьте обработку исключений

Если блок кода внутри `except` сломан, то этого легко не заметить. Сначала программа будет отлично …

Используйте contextlib.suppress

Если программист хочет проигнорировать какое-нибудь исключение, то часто получается подобный код: ```python try: os.remove('somefile.tmp') except …

Сократите размер блоков `try...except`

Внутри `try...except` должен быть только тот код, для которого этот блок был добавлен. Излишняя логика …

Используйте исключения из атрибутов модели

Django создаёт исключения `DoesNotExist` и `MultipleObjectsReturned` как атрибуты каждой модели, чтобы можно было обработать ошибку …