Это продолжение статьи Исключения в 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. Введение