Расскажи про иерархию исключений Python
Для обработки исключений Python предоставляет конструкцию из трех слов: try
, except
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