Обработка исключений в 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. Спасибо за прочтение!