Корень иерархии — BaseException, но прикладные ошибки обычно ловят через Exception. Собственные исключения следует наследовать от Exception или его подходящего подкласса.
Какая базовая ошибка в Python, чтобы поймать всё, и от чего наследовать пользовательские исключения?
Корень иерархии — BaseException, но прикладные ошибки обычно ловят через Exception. Собственные исключения следует наследовать от Exception или его подходящего подкласса.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Корень иерархии — BaseException, но прикладные ошибки обычно ловят через Exception. Собственные исключения следует наследовать от Exception или его подходящего подкласса.
except Exception: перехватывает обычные ошибки приложения, но не KeyboardInterrupt, SystemExit и некоторые специальные сигналы завершения. except BaseException: или голый except: захватит и их, поэтому без специальной причины так делать не стоит. Для очистки ресурсов обычно нужен finally или контекстный менеджер, а не подавление всех ошибок. Пример доменного исключения: class OrderUnavailableError(Exception): pass. Перехватывайте наиболее конкретные типы и не скрывайте неожиданные ошибки пустым обработчиком.