...греки, вложившие в такое множество слов так мало мыслей (Ф. Вольтер).

5 примеров в Python для обработки исключений с помощью try, except и finally

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
28 мая 2019
5 примеров в Python для обработки исключений с помощью try, except и finally
Исключения в python являются ошибками, генерируемыми синтаксически правильными утверждениями.

Они прекращают выполнение сценария. Некоторыми примерами исключений являются NameError, TypeError, AssertionError, ConnectionAbortedError и т. д.

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

Эта статья охватывает следующие примеры:

  1. Блок try-except в Python
  2. Обработка множественных исключений в Python
  3. Блок finally в Python – когда происходит исключение
  4. Блок finally  в Python – когда нет исключений
  5. Вложенный блок  try-except в Python

Посмотрите на следующий код:

t
a = 12
s = "привет"
print(a+s)

 

Вывод:

Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'

 

Здесь синтаксис функции печати правильный, но добавление целого числа и строки неверно. Следовательно, TypeError вызывается интерпретатором Python.

 

1. Блок try-except в Python

Ключевые слова, вовлеченные в обработку исключений, являются try, except и finally.

Блок try должен сопровождаться блоком исключения. Добавление блока finally не является обязательным.

Операторы в блоке try выполняются построчно. Если выполнение какого-либо оператора выдает исключение. Остальные операторы в этом блоке пропускаются, и начинается выполнение кроме блока.

Пример:

a = 12
s = "привет"
try:
    print("внутри try")
    print(a + s) # поднимет исключение TypeError
    print("Печать с использованием исходных типов данных")
except TypeError: # будет обрабатывать только TypeError
    print("внутри, за исключением")
    print(str(a) + s)
    print("Печать с использованием type-casted типов данных")

 

Вывод:

внутри try
внутри, за исключением
12привет
Печать с использованием type-casted типов данных

 

Здесь TypeError был вызван при выполнении строки 2 внутри блока try. Следовательно, выполнение остальных операторов было пропущено и, кроме выполнения блока, началось. Обратите внимание, что исключения, которые нужно обработать, упоминаются ключевое слово except.

 

2. Обработка множественных исключений в Python

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

try:
    if (3 + 4 - 5) > 0:
        a = 3
        a.append("привет")  # Выбрасывает AttributeError
    else:
        print("привет" + 4)  # Выбрасывает TypeError
except (AttributeError, TypeError) as e:
    print("Произошла ошибка:", e)

 

Вывод:

Произошла ошибка: 'int' object has no attribute 'append'

 

3. Блок finally в Python наконец – когда происходит исключение

Блок finally, который находится после блока except. Этот блок операторов выполняется независимо от того, было ли обнаружено исключение или нет.

Добавление блока finally к предыдущему примеру:

try:
    if (3 + 4 - 5) > 0:
        a = 3
        a.append("привет")  # выбрасывает атрибут ошибки
    else:
        print("привет" + 4)  # выбрасывает TypeError
except (AttributeError, TypeError) as e:
    print("Произошла ошибка:", e)
finally:
    print("Блок try except успешно выполнен")

 

Вывод:

Произошла ошибка: 'int' object has no attribute 'append'
Блок try except успешно выполнен

 

Здесь операторы в try вызывают исключение, за исключением того, что был выполнен блок и затем блок finally.

 

4. Блок finally в Python – когда нет исключений

Посмотрим на другой пример:

try:
    if (3 + 4 - 5) < 0:
        a = 3
        print(a + 5)  # простое добавление
    else:
        print("привет" + "4")  # конкатенация строк
except (AttributeError, TypeError) as e:
    print("Произошла ошибка:", e)
finally:
    print("Блок try except успешно выполнен")

 

Вывод:

8
Блок try except успешно выполнен

 

Здесь мы видим, что блок finally был выполнен, даже если блок исключений никогда не выполнялся.

Если операторы внутри блока except и finally выдают исключение, выполнение оставшегося сценария будет прекращено.

 

5. Вложенный в Python блок try-except

Блок try-except может быть окружен другим блоком try-except.

import json
import sys

try:
    with open("привет.json") as fp:
        try:
            json_dict = json.load(fp)
        except json.JSONDecodeError:
            print("Файл Json не существует")
    print(json_dict)
except:
    print("Произошла ошибка при разборе json:", sys.exc_info()[1])

 

Вывод: если привет.json существует

{'name': 'AndreyEx', 'surname': 'Andrey'}

 

Вывод: если привет.json не существует

Произошла ошибка при разборе json: [Errno 2] No such file or directory: 'привет.json'

 

Вывод: если привет.json не является допустимым файлом json

Файл Json не существует
произошла ошибка при разборе json: name 'json_dict' is not defined

 

Эта форма решения может обрабатывать исключение, возникающее внутри блока except или finally.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 241

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close