Расскажи про иерархию исключений Python

Для обработки исключений Python предоставляет конструкцию из трех слов: tryexcept else и finally.

try
Основной код закладывается в try

except
Если в этом коде генерируется исключение, то работа кода в блоке try прерывается, и выполнение переходит в блок except.

else
выполняется в том случае, если исключения не было.

finally
выполняется в любом случае, даже если было исключение (применима, когда нужно непременно что-то сделать, к примеру, закрыть файл)

Синтаксис выглядит примерно так:

try:
    # попробовать сделать это
except:
    # если блок try не сработал, попробовать это
finally:
    # всегда делать это

Ниже упрощенный пример такой конструкции. Здесь блок try терпит неудачу, поскольку мы не можем складывать целые числа со строками. Блок except устанавливает val = 10, а затем блок finally выводит complete:

try:
    val = 1 + 'A'
except:
    val = 10
finally:
    print('complete')

print(val)
#=> complete

Oct. 10, 2023, Источник

Иерархия исключений представляет собой организацию встроенных исключений в иерархическую структуру, которая облегчает обработку ошибок и исключительных ситуаций в программе. Все они наследуются от базового класса `BaseException`. Ниже приведена общая иерархия исключений:

1. BaseException

  • Exception
  • ArithmeticError
  • ZeroDivisionError: Вызывается при делении на ноль.
  • OverflowError: Вызывается, когда результат арифметической операции слишком велик для представления.
  • FloatingPointError: Вызывается при выполнении недопустимой арифметической операции с плавающей точкой.
  • AttributeError: Вызывается при попытке доступа к несуществующему атрибуту объекта.
  • EOFError: Вызывается, когда достигнут конец файла.
  • IOError: Вызывается при возникновении ошибок ввода-вывода.
  • ImportError: Вызывается при неудачной попытке импорта модуля.
  • KeyError: Вызывается при попытке доступа к несуществующему ключу словаря.
  • TypeError: Вызывается при попытке выполнения операции с объектом несовместимого типа.
  • ValueError: Вызывается, когда функция получает аргумент правильного типа, но недопустимого значения.
  • RuntimeError: Вызывается в случае внутренней ошибки интерпретатора.
  • StopIteration: Вызывается при достижении конца итератора в операциях итерации.
  • KeyboardInterrupt: Вызывается при нажатии пользователем комбинации клавиш прерывания (обычно `Ctrl+C`).

2. SystemExit: Вызывается при завершении программы с помощью функции `sys.exit()`.

3. KeyboardInterrupt: Вызывается при прерывании программы пользователем (обычно `Ctrl+C`).

4. GeneratorExit: Вызывается при закрытии генератора.

5. Exception: Базовый класс для всех встроенных исключений.

Использование исключений позволяет ловить и обрабатывать ошибки и исключения в программе, что делает код более надежным и стабильным. Вы можете использовать блоки `try`, `except`, `else` и `finally` для обработки исключений.

Feb. 22, 2024, easyoffer