• burger-icon

    Шаг 5. Конструкция try-except

    Баллов за прохождение: 1

    Конструкция try-except

    В Python конструкция try-except используется для обработки исключений. Она позволяет вашей программе продолжать выполнение в случае, если возникает ошибка, и, что самое главное, позволяет нам самим выбирать, как программа будет реагировать на исключения.

    Traceback

    Когда в коде возникает исключение, Python выдает сообщение об исключении и так называемую трассировку. 

    Трассировка показывает, в какой точке вашей программы произошло исключение, разберем на примере

    division = 35 // 0
    print(division)

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

    Трассировка выглядит следующим образом

    Она показывает нам путь до файла, в котором произошла ошибка, строчку, и сам код с ошибкой. Далее ниже идет тип самого исключения, у нас это ZeroDivisionError, и пояснение исключения.

    Важно! Разработчики Python хорошо постарались, дабы сообщения об ошибках были максимально понятны, не бойтесь проверять код и искать информацию в интернете при возникновении ошибок: особенно на первых порах, решение вашей проблемы будет лежать "на поверхности"

    try-except

    Обработка исключений нужна в первую очередь для безопасности, так как данные трассировки могут содержать секретную информацию, которую не должен видеть пользователь. Так же она нужна для упрощения взаимодействия пользователя и программы, так как обычный пользователь может просто не понять, почему случилась ошибка

    Для демонстрации того, как работает try-except возьмем код из предыдущего раздела про трассировку и обработаем исключение

    try:
        # Код, который может вызвать исключение
        division = 35 // 0 
        print(division)
    except ZeroDivisionError:
        # Код, выполняющийся в случае, если исключение возникло
        print('Деление на ноль невозможно!')

    В блок try помещается код, который может вызвать исключение, а в блок except помещается код, который выполняется в случае если исключение возникло, в нашем случае выводит сообщение, понятное юзеру

    Также можно использовать несколько блоков except для обработки разных типов исключений:

    try:
        # Код, который может вызвать исключение
        result = int("abc")
    except ValueError:
        # Обработка ошибки преобразования строки в число
        print("Неверный формат числа.")
    except ZeroDivisionError:
        # Обработка ошибки деления на ноль
        print("Деление на ноль невозможно.")
    

    try-except-else

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

    try:
        division = 4 // 2
    except ZeroDivisionError:
        print("Деление на ноль невозможно.")
    else:
        print(f'Результат: {division}')

    try-except-finally

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

    try:
        file = open("example.txt", "r")
        content = file.read()
    except FileNotFoundError:
        print("Файл не найден.")
    finally:
        file.close()
        print("Файл закрыт.")
    

     


    Обработка исключений

    Смотреть на YouTube

    Для решения задачи, Зарегистрируйтесь или Войдите на сайт.