Иногда созданная программа имеет ошибку или аварийно завершает работу. Вызвано ошибкой при выполнении программы интерпретатором. А Exception Handling — это механизм обработки исключений в программе.

В приведенной выше программе, где мы используем функцию int() для ввода команд, но не вводим целое число, возникает ошибка. И программа ошибок отображает сообщение, которое является ошибкой в ​​программе. Это ‘ValueError: неверный литерал для int() с основанием 10: ‘a’

И как мы меняем сообщение об ошибке? Или как заставить программу работать? Мы будем использовать так называемую обработку исключений, которая заменит сообщение об ошибке.

Скрипт:

try:
    int(input("Input a number: "))
except ValueError:
    print("[INPUT ERROR]")

Выход:

Input a number: a
[INPUT ERROR]

Следует отметить, что если во время выполнения программой итерации (циклы for и while) возникает ошибка, программа немедленно останавливается. А с помощью обработки исключений программа может продолжать выполнять текущую итерацию. Посмотрите на эту программу и вывод.

Скрипт:

while True:
    try:
        x = int(input("Input a number: "))
        option = input("Want to input again? (y/n): ")
        #when input 'n', the loop will break
        if option == 'n':
           break
    except ValueError:
    #when we wrong input, it'll display message error:
        #use '\n' to enter
        print("\n[INPUT ERROR]\n")
#when the input program finished, will print
print("Thank you")

О цикле в питоне можно кликнуть здесь.

Выход:

Input a number: 4
Want to input again? (y/n): y
Input a number: g
[INPUT ERROR]
Input a number: 
...

Сообщение об ошибке можно изменить в разделе кроме [errorMessage].

Try и Except (обработка исключений) в python работают следующим образом:

try:
    program ...
    program ...
except errorMessage:
    program ...

А как насчет того, чтобы у нас было 2 задачи в одной программе? Взгляните на следующий пример.

Скрипт:

x = int(input("Input first number: "))
y = int(input("Input second number: "))
result = x / y
print(x, ':', y, '=', result)

А затем запускаем программу.

Это первая проблема. Ошибка возникает из-за того, что нельзя разделить на ноль.

Input first number: 1
Input second number: 0
Traceback (most recent call last):
line 4, in <module>
    result = x / y
ZeroDivisionError: division by zero

Это первая проблема. Ошибка возникает из-за того, что нельзя разделить на ноль.

Или ошибка ввода возникает примерно так:

Input first number: 1
Input second number: f
Traceback (most recent call last):
line 2, in <module>
        y = int(input("Input second number: "))
ValueError: invalid literal for int() with base 10: 'f'

И это вторая проблема. Это связано с тем, что мы используем функцию int() для ввода, но вводим не целое число.

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

Взгляните на этот пример сценария для использования двух исключений одновременно.

Скрипт:

#use '\n' as enter
print("Count 2 numbers\n")
while True:
    try:
        x = int(input("Input first number: "))
        y = int(input("Input second number: "))
        result = x / y
        print(x, ':', y, '=', result)
        option = input("Want to count again? y/n: ")
        if option == 'n':
           print("\n[Exit ...]")
           break
    #except handling 2 at once
    except ValueError:
        print("\n[Input Error]\n")
    except ZeroDivisionError:
        print("\n[Can’t be divided by zero]\n")

И вывод будет выглядеть так:

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

Спасибо за прочтение, надеюсь, эта статья поможет начинающим программистам на Python.