5.02. Список ошибок и исключений
Список ошибок и исключений
В Python все встроенные исключения находятся в модуле builtins. Для получения полного списка можно выполнить команду:
import builtins
print(dir(builtins))
Этот список включает не только исключения, но и другие встроенные объекты (например, True, False, None, int, str и т.д.). Чтобы выделить именно типы ошибок (исключения), нужно отфильтровать элементы, имена которых заканчиваются на Error или Warning.
Список встроенных исключений (ошибок) в Python 3.12+:
Основные базовые классы:
BaseException— корневой класс для всех исключений.Exception— базовый класс для большинства пользовательских и встроенных исключений.
Исключения, наследующие Exception:
ArithmeticErrorFloatingPointErrorOverflowErrorZeroDivisionError
AssertionErrorAttributeErrorBufferErrorEOFErrorImportErrorModuleNotFoundError
LookupErrorIndexErrorKeyError
MemoryErrorNameErrorUnboundLocalError
OSErrorBlockingIOErrorChildProcessErrorConnectionErrorBrokenPipeErrorConnectionAbortedErrorConnectionRefusedErrorConnectionResetError
FileExistsErrorFileNotFoundErrorInterruptedErrorIsADirectoryErrorNotADirectoryErrorPermissionErrorProcessLookupErrorTimeoutError
ReferenceErrorRuntimeErrorNotImplementedErrorRecursionError
StopIterationSyntaxErrorIndentationErrorTabError
SystemErrorTypeErrorValueErrorUnicodeErrorUnicodeDecodeErrorUnicodeEncodeErrorUnicodeTranslateError
WindowsError(только на Windows, устаревшее в новых версиях, заменено наOSError)
Предупреждения (Warnings):
WarningUserWarningDeprecationWarningPendingDeprecationWarningSyntaxWarningRuntimeWarningFutureWarningImportWarningUnicodeWarningBytesWarningResourceWarning
Примечания:
- Некоторые исключения, такие как
GeneratorExit,KeyboardInterrupt,SystemExit, наследуются непосредственно отBaseException, а не отException. Их обычно не перехватывают в общих блокахexcept Exception, так как они сигнализируют о завершении программы или прерывании с клавиатуры. - В современных версиях Python (
3.10+) структура исключений стабильна, но могут добавляться новые подклассы (например,ModuleNotFoundErrorбыл добавлен в Python 3.6). - Для получения точного списка в вашей версии Python используйте фильтрацию:
import builtins
errors = [name for name in dir(builtins) if name.endswith('Error') or name.endswith('Warning')]
for err in sorted(errors):
print(err)
Это обеспечит актуальность списка для вашей среды исполнения.