Блог

Исключения в Python. Конструкция try-except

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

Перехватить все возможные исключения (Exceptions) в этой ситуации мы сможем с помощью конструкции try-except:

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

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

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

Как видим, код не стал больше, скорее даже наоборот — он стал понятнее.

Однако помимо этого мы получили возможность перехватывать абсолютно все ошибки, которые могут возникнуть в блоке try при вычислении переменной result:

  1.) Ошибка деления на ноль:

>>>
    Please enter an integer: 0
    <class 'ZeroDivisionError'> division by zero
    Please enter another number!

  2.) Ошибка ввода дробного значения:

>>>
    Please enter an integer: 1.1
    <class 'ValueError'> invalid literal for int() with base 10: '1.1'
    Please enter another number!

  3.) Ошибка ввода нечисловых символов:

>>>
    Please enter an integer: asd
    <class 'ValueError'> invalid literal for int() with base 10: 'asd'
    Please enter another number!

И самое главное, благодаря этой конструкции будут перехвачены вообще все мыслимые и немыслимые ошибки ввода. Даже те, которые могут возникнуть в новых версиях интерпретатора Python, программа не будет завершена аварийно и пользователь в конце концов сможет ввести валидное значение делителя!

Продолжить в статье Исключения в Python. Конструкция try-except-else

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