Перейти к содержимому
На этой странице

Исключения в Python

Все темы Python Developer

Как обрабатывать исключения и не скрывать ошибки?

Перехватывают только ожидаемые типы ошибок и ограничивают try операцией, которая действительно может упасть. В except добавляют контекст, который поможет найти входные данные и этап сбоя, но не логируют секреты. Если слой не умеет восстановиться, ошибку поднимают дальше через raise; при преобразовании используют raise DomainError(...) from exc. Голый except: pass скрывает и программные ошибки, и сигналы завершения. Границу обработки выбирают там, где слой способен восстановиться, добавить полезный контекст или перевести сбой в доменную ошибку.


Когда выполняется finally и чем опасен return внутри него?

finally выполняется при обычном выходе, return, break и распространении исключения. Его используют для освобождения ресурса, если контекстный менеджер не подходит. return внутри finally опасен: он заменяет ранее вычисленный результат и подавляет летящее исключение. Гарантия не абсолютна для аварийного завершения процесса, os._exit() или отключения питания. Границу обработки выбирают там, где слой способен восстановиться, добавить полезный контекст или перевести сбой в доменную ошибку.


Как и когда создавать собственные исключения?

Собственное исключение нужно, когда вызывающему коду полезно отличать доменную ошибку от технической. Класс обычно наследуют от Exception, дают ему конкретное имя и при необходимости поля с машинно читаемым контекстом. Родственные ошибки объединяют базовым классом. При переводе низкоуровневой причины в доменную сохраняют цепочку: raise PaymentError(...) from exc. Сообщение должно объяснять сбой, но не раскрывать секреты. Границу обработки выбирают там, где слой способен восстановиться, добавить полезный контекст или перевести сбой в доменную ошибку.


Когда использовать assert, а когда raise?

assert выражает внутренний инвариант разработчика и помогает заметить невозможное состояние. При запуске Python с оптимизацией assertions могут быть удалены, поэтому ими нельзя проверять пользовательский ввод, права, платеж или обязательное предусловие API. Для таких случаев явно поднимают подходящее исключение. Assertion также не должен иметь нужного программе побочного эффекта, иначе поведение изменится под -O. Границу обработки выбирают там, где слой способен восстановиться, добавить полезный контекст или перевести сбой в доменную ошибку.


Чем исключение отличается от синтаксической ошибки?

Синтаксическая ошибка возникает при разборе исходного кода до выполнения соответствующего модуля; обычный try внутри этого неразобранного кода ее не перехватит. Исключение возникает во время исполнения и может быть обработано подходящим except. Некоторые SyntaxError можно поймать вокруг динамического compile или импорта. Восстанавливаться стоит только там, где понятен корректный следующий шаг. Границу обработки выбирают там, где слой способен восстановиться, добавить полезный контекст или перевести сбой в доменную ошибку.

Собеседования: Python

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: Python-разработчик, Backend-разработчик на Python. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.