Все ошибки в Python наследуются от класса BaseException
. Некоторые еще наследуются от Exception
Список ошибок
Ошибка | Описание |
---|---|
ArithmeticError |
Арифметическая ошибка. |
AssertationError |
Ложное выражение в функции assert ложно |
AttributeError |
Обращение к несуществующему атрибуту |
BlockingIOError |
Исключение, которое возникает в Python при попытке выполнить операцию ввода-вывода на заблокированном сокете. |
BrokenPipeError |
Возникает при использовании сокетов. Эта ошибка происходит, когда соединение с сервером разрывается. |
BufferError |
Операция с буфером не может быть выполнена |
ChildProcessError |
Ошибка при операции с дочерним процессом |
ConnectionAbortedError |
Еще одна ошибка, возникающая при разрыве соединения с сервером |
ConnectionError |
Исключения, связанные с подключением |
ConnectionRefusedError |
Возникает, когда подключение к удаленному серверу отклонено |
ConnectionResetError |
Возникает, когда удаленный сервер неожиданно закрывает соединение. |
EOFError |
Программа дошла до конца файла и не смогла прочитать желаемое |
FileExistsError |
Попытка создать существующий файл или каталог |
FileNotFoundError |
Файл или каталог не найден |
FloatingPointError |
Исключение, вызываемое при неправильной операции с float |
GeneratorExit |
Вызывается при закрытии объекта generator с помощью метода close |
ImportError |
Невозможно импортировать модуль |
IndentationError |
Неверные отступы |
IndexError |
Индекс не входит в диапазон элементов |
InterruptedError |
Cистемный вызов прерван входящим сигналом |
IsADirectoryError |
Передана директория вместо файла |
KetboardInterrupt |
Исключение, вызываемое при прерывании программы |
KeyError |
Несуществующий ключ |
LookupError |
Нет элемента по индексу или ключу |
MemoryError |
Недостаточно памяти |
NameError |
Нет переменной |
NotADirectoryError |
Передан файл вместо директории |
NotImplementedError |
Абстрактные методы класса не реализованы |
OSError |
Ошибка операционной системы |
OverflowError |
Исключение, возникающее когда результат операции слишком велик |
PermissionError |
Нет прав доступа |
ProcessLookupError |
Нет переданного процесса |
ReferenceError |
Попытка получить доступ к атрибуту со слабой ссылкой |
RuntimeError |
Исключение, которое возникает во время выполнения программы, когда происходит какая-то ошибка, не покрываемая другими специфическими исключениями |
StopIteration |
Вызывается, если вызван метод next итерируемого объекта, а в нем не осталось элементов |
SyntaxError |
Ошибка синтаксиса |
SystemError |
Внутренняя ошибка |
SystemExit |
Исключение, которое вызывает функция sys.exit() при выходе из программы |
TabError |
Смешивание пробелов и табов в отступах |
TimeoutError |
Превышено время ожидания |
TypeError |
Неправильный тип |
UnboundLocalError |
Ссылка на несуществующую локальную переменную внутри функции |
UnicodeDecodeError |
Исключение, связанное с декодированием unicode . |
UnicodeEncodeError |
Исключение, связанное с кодированием unicode . |
UnicodeError |
Ошибка, связанная с кодированием / декодированием unicode в строках. |
UnicodeTranslateError |
Исключение, связанное с переводом unicode . |
ValueError |
Некорректное значение |
ZeroDivisionError |
Деление на ноль |
Пользовательские исключения наследуются от класса Exception
. Самое простое исключение выглядит так:
class MyCustomError(Exception):
pass
raise MyCustomError()
И его вывод такой:
Traceback (most recent call last):
File "D:\python_projects\test\main.py", line 7, in <module>
raise MyCustomError()
MyCustomError
Такое исключение не особо информативно. Давайте это исправим, добавив метод __str__
:
class MyCustomError(Exception):
def __str__(self):
return 'Вызвана ошибка MyCustomeError'
raise MyCustomError()
Теперь так:
Traceback (most recent call last):
File "D:\python_projects\test\main.py", line 6, in <module>
raise MyCustomError()
MyCustomError: Вызвана ошибка MyCustomerError
Еще можно сделать так, чтобы можно было передавать ошибке аргументы:
class MyCustomError(Exception):
def __init__(self, message=''):
self.message = message or None
def __str__(self):
return f'Вызвана ошибка MyCustomerError, {self.message if self.message else ''}'
# выдача MyCustomError
raise MyCustomError('аргумент передан')
Сейчас вывод такой:
Traceback (most recent call last):
File "D:\python_projects\test\main.py", line 10, in <module>
raise MyCustomError('аргумент передан')
MyCustomError: Вызвана ошибка MyCustomerError, аргумент передан
Объектно-ориентированное программирование - одна из самых распространенных парадигм. Знание ООП позволит сделать код более гибким и масштабируемым
Для написания сложных программ необходимо использовать сторонние библиотеки. Они позволяют использовать готовый функционал. Также можно использовать модули для компоновки вашего приложения.
В Python 3.10 был добавлен новый функционал - сопоставление с шаблонами с помощью ключевых слов match и case. В статье также рассматривается производительность match/case по сравнению с if/else.
Обработка исключений — это важная часть программирования на языке Python, которая позволяет программе продолжать выполнение даже в случае возникновения ошибок. В этой статье мы рассмотрим основные принципы и методы обработки исключений, а также узнаем, почему они так важны для создания надежных и стабильных программ.