Обработка разных типов исключений

Обработка разных типов исключений

@ProgHelpBot
  1. Встроенные типы исключений
  2. Обработка нескольких типов исключений
  3. Получение информации об исключении

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

После ключевого слова except может быть указано имя конкретного исключения.

try:
  a = int(input())
  print(a)
except ValueError:
  print("ValueError")

print("End")

К базовым типам исключений относятся:

  • BaseException: базовый тип для всех встроенных исключений;
  • Exception: базовый тип, который обычно применяется для создания своих типов исключений;
  • ArithmeticError: базовый тип для исключений, связанных с арифметическими операциями (OverflowError, ZeroDivisionError, FloatingPointError);
  • BufferError: базовый тип исключения, которое возникает при невозможности выполнить операцию с буффером;
  • LookupError: базовый тип для исключений, которое возникают при обращении в коллекциях по некорректному ключу или индексу (например, IndexError, KeyError).

От этих классов наследуются все конкретные типы исключений. Python обладает большим списком встроенных исключений, который приведён в документации. Наиболее часто встречающиеся:

  • IndexError: возникает, если индекс при обращении к элементу коллекции находится вне допустимого диапазона;
  • KeyError: возникает, если в словаре отсутствует ключ, по которому происходит обращение к элементу словаря;
  • OverflowError: возникает, если результат арифметической операции не может быть представлен текущим числовым типом (обычно типом float);
  • RecursionError: возникает, если превышена допустимая глубина рекурсии;
  • TypeError: возникает, если операция или функция применяется к значению недопустимого типа;
  • ValueError: возникает, если операция или функция получают объект корректного типа с некорректным значением;
  • ZeroDivisionError: возникает при делении на ноль;
  • NotImplementedError: возникает, когда какие-то методы класса нереализованны;
  • ModuleNotFoundError: возникает при при невозможности найти модуль при его импорте директивой import;
  • OSError: генерируется при возникновении ошибок системы (например, невозможно найти файл, память диска заполнена и т.д.).

Обработка нескольких типов исключений

Если при выполнении программы могут возникать различные типы исключений, то их можно обрабатывать по отдельности.

try:
  a = int(input())
  b = int(input())
  print(a / b)
except ValueError:
  print("ValueError")
except ZeroDivisionError:
  print("ZeroDivisionError")
except BaseException:
  print("BaseException")

В одном блоке except можно обрабатывать сразу несколько исключений.

try:
  a = int(input())
  b = int(input())
  print(a / b)
except(ValueError, ZeroDivisionError):
  print("Error")

Получение информации об исключении

С помощью оператора as можно передать всю информацию об исключении в переменную, которую затем можно использовать в блоке except.

try:
  a = int(input())
  print(a)
except ValueError as e:
  print(e)

Результат, если вводится строка Hello:

invalid literal for int() with base 10: 'Hello'


← Класс object. Строковое представление объекта

→ Генерация исключений и создание своих типов исключений

Report Page