Блог

Исключения в Python. Перехват специфических ошибок

Это продолжение статьи Исключения в Python. Введение

Иногда определённые типы исключений требуют специфической реакции или специфической обработки, отличной от обработки других типов исключений. Python предоставляет такую возможность - возможность классифицировать исключение по имени класса и совершить необходимые действия, заранее определённые для каждого выбранного класса ошибок.

Но прежде чем перейти к примеру кода, который решает этот вопрос, стоит посмотреть, какие вообще существуют классы исключений в Python. Для этого в первую очередь следует обратиться к официальной документации Python: https://docs.python.org/3/library/exceptions.html .

Можно также получить список всех встроенных исключений с помощью следующей команды в консоли Python:

dir(locals()['__builtins__'])

В коде, представленном ниже, в отдельные блоки формируются 3 группы исключений:

  1. Ошибка соответствия значения и типа данных (ValueError, TypeError)
  2. Ошибка деления на ноль ZeroDivisionError
  3. Все остальные виды исключений

while True:
    line = input('Please enter an integer: ')
    if line == 'end':
        break

    try:
        result = 100 / int(line)
        print(result)

    except (ValueError, TypeError) as e:
        print('Exception for Value or Type Error')
        print(e.__class__, e)
        print('Please enter another number! ')

    except ZeroDivisionError as e:
        print('Exception for ZeroDivisionError')
        print(e.__class__, e)
        print('Please enter another number! ')

    except Exception as e:
        print('Exception for other error')
        print(e.__class__, e)
        print('Please enter another number! ')

Продолжить в статье Исключения в Python. Операторы вызова исключений: raise и assert

Вернуться в начало, на статью Исключения в Python. Введение