Иногда созданная программа имеет ошибку или аварийно завершает работу. Вызвано ошибкой при выполнении программы интерпретатором. А 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.