← Назад ко всем вопросам

Какие есть классы исключений?

1️⃣ Как кратко ответить

В Python исключения делятся на встроенные и пользовательские. Встроенные включают Exception, ArithmeticError, LookupError, IOError, ImportError, ValueError и другие. Пользовательские создаются путем наследования от Exception или его подклассов.

2️⃣ Подробное объяснение темы

Исключения в Python — это механизм обработки ошибок, который позволяет программе продолжать выполнение после возникновения ошибки. Исключения делятся на несколько классов, которые можно разделить на две основные категории: встроенные и пользовательские.

Встроенные классы исключений

  1. BaseException: Базовый класс для всех исключений. Обычно не используется напрямую.

  2. Exception: Базовый класс для всех встроенных исключений, кроме системных. От него наследуются все остальные исключения, которые можно перехватывать и обрабатывать.

  3. ArithmeticError: Базовый класс для ошибок, возникающих при арифметических операциях. Подклассы:

    • ZeroDivisionError: Деление на ноль.
    • OverflowError: Числовое переполнение.
    • FloatingPointError: Ошибка в операции с плавающей точкой.
  4. LookupError: Базовый класс для ошибок, возникающих при обращении к несуществующему индексу или ключу. Подклассы:

    • IndexError: Индекс не входит в диапазон.
    • KeyError: Ключ не найден в словаре.
  5. IOError: Ошибка ввода-вывода. В Python 3 заменено на OSError.

  6. ImportError: Ошибка при попытке импорта модуля. В Python 3.6+ имеет подкласс ModuleNotFoundError.

  7. ValueError: Ошибка, возникающая, когда функция получает аргумент правильного типа, но некорректного значения.

  8. TypeError: Ошибка, возникающая, когда операция или функция применяется к объекту неподходящего типа.

  9. NameError: Ошибка, возникающая при попытке доступа к несуществующей переменной.

  10. OSError: Ошибки, связанные с операционной системой, такие как ошибки файловой системы.

Пользовательские классы исключений

Пользовательские исключения создаются для обработки специфических ошибок, которые не покрываются встроенными классами. Для этого создается новый класс, наследующий от Exception или его подклассов.

class MyCustomError(Exception):
    """Класс для пользовательской ошибки."""
    def __init__(self, message):
        super().__init__(message)
​
try:
    raise MyCustomError("Это пользовательская ошибка")
except MyCustomError as e:
    print(e)
  • class MyCustomError(Exception): Создание нового класса исключения, наследующего от Exception.
  • def init(self, message): Инициализация класса с сообщением об ошибке.
  • super().init(message): Вызов конструктора базового класса Exception с передачей сообщения.
  • try: Блок, в котором может возникнуть исключение.
  • raise MyCustomError("Это пользовательская ошибка"): Искусственное возбуждение пользовательского исключения.
  • except MyCustomError as e: Обработка исключения, если оно возникло.

Тема: Python
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки