Обработка исключений в python | try, except, else, finaly
Ошибка в Python может быть двух типов: синтаксические ошибки и исключения. Ошибки - это проблемы в программе, из-за которых программа остановит выполнение. С другой стороны, исключения возникают, когда происходят некоторые внутренние события, которые изменяют нормальный ход программы.
Примечание: Для получения дополнительной информации обратитесь к ошибкам и исключениям в Python
Некоторые из распространенных ошибок исключения являются :
- IOError: если файл не может быть открыт
- KeyboardInterrupt: когда пользователь нажимает ненужную клавишу.
- ValueError: когда встроенная функция получает неверный аргумент
- EOFError: если достигнут конец файла без чтения каких-либо данных
- ImportError: если не удается найти модуль
Try Except в Python
Оператор Try и Except используется для обработки этих ошибок в нашем коде на Python. Блок try используется для проверки некоторого кода на наличие ошибок, т.е. код внутри блока try будет выполняться, когда в программе нет ошибки. Принимая во внимание, что код внутри блока except будет выполняться всякий раз, когда программа столкнется с какой-либо ошибкой в предыдущем блоке try.
Синтаксис:
try: # Некоторый код except: # Выполняется, если ошибка в try
Как работает try()?
Сначала выполняется предложение try, то есть код между предложением try и предложением except.
Если исключения нет, то будет выполняться только предложение try, за исключением того, что предложение завершено.
Если возникнет какое-либо исключение, предложение try будет пропущено и будет выполнено предложение except.
Если возникает какое-либо исключение, но предложение except в коде не обрабатывает его, оно передается внешним операторам try. Если исключение остается необработанным, то выполнение останавливается.
Оператор try может содержать более одного предложения except
Код 1: Исключения нет, поэтому предложение try будет выполнено.
# Код на Python для иллюстрации def divide(x, y): try: # Floor Division : Gives only Fractional Part as Answer result = x // y print("Да! Ваш ответ таков :", result) except ZeroDivisionError: print("Извините! вы делите на 0 ") divide(3, 2)
# Посмотрите на параметры и обратите внимание на работу программы
divide(3, 2)
Вспомогательное пространство: O(1)
Вывод :
("Да! Ваш ответ таков :', 1)
Код 2: Существует исключение, поэтому будет выполняться только предложение except.
# Код на Python для иллюстрации # работа try() def divide(x, y): try: # Разделение этажа : Дает только дробную часть в качестве ответа result = x // y print("Да! Ваш ответ таков :", результат) except ZeroDivisionError: print("Извините! Вы делите на ноль")
# Посмотрите на параметры и обратите внимание на работу программы
divide(3, 0)
Вывод :
Извините! Вы делите на ноль
Else
В python вы также можете использовать предложение else в блоке try-except, которое должно присутствовать после всех предложений except. Код переходит в блок else только в том случае, если предложение try не вызывает исключения.
Синтаксис:
try: # Некоторый код except: # Выполняется, если ошибка в # попробуйте заблокировать else: # выполнить, если исключения нет
Код:
# Программа для отображения предложения else с помощью try-except # Функция, которая возвращает a/b def AbyB(a , b): try: c = ((a+b) // (a-b)) except ZeroDivisionError: print("результат a/b равен 0") else: print(c) # Программа драйвера для тестирования вышеуказанной функции AbyB(2.0, 3.0) AbyB(3.0, 3.0)
Вывод:
-5.0 a/b приводит к 0
Ключевое слово Finally в Python
Python предоставляет ключевое слово finally, которое всегда выполняется после блоков try и except. Конечный блок всегда выполняется после обычного завершения блока try или после завершения блока try из-за некоторых исключений.
Синтаксис:
пробовать: # Некоторый код try: # Выполняется, если ошибка в # попробуй заблокировать execpt: # выполнить, если finaly: # Какой-то код ..... (всегда выполняется)
Код:
# Программа на Python для демонстрации, finaly # Нет исключения Исключение, вызванное в блоке try попытка : k = 5//0 # вызывает исключение деления на ноль. print(k) # обрабатывает исключение с нулевым разделением except ZeroDivisionError: print("Не могу разделить на ноль") finaly: # этот блок всегда выполняется # независимо от генерации исключения. print('Это всегда выполняется')
Вывод:
Не могу разделить на ноль Это всегда выполняется
Заключение
В данной статье мы рассмотрели обработку исключений в python, благодаря таким операторам как try, except, else, finaly. Спасибо за прочтение!