Главная страница
Навигация по странице:

  • BaseException

  • ArithmeticError

  • IndexError

  • Основы питон. #инструкция объявляющая переменную var и присваивающая ей значение равное 5


    Скачать 92.15 Kb.
    Название#инструкция объявляющая переменную var и присваивающая ей значение равное 5
    АнкорОсновы питон
    Дата04.10.2022
    Размер92.15 Kb.
    Формат файлаdocx
    Имя файлаPR_1_Osnovy_Phyto2n.docx
    ТипДокументы
    #713585
    страница6 из 7
    1   2   3   4   5   6   7

    Исключения


    Исключения – это объекты, которые выводятся на экран как строка с текстом сообщения. Обычно они вызываются функциями и методами при возникновении ошибок или других важных событий при выполнении программы. В предыдущем разделе мы ловили ошибку с помощью assert. Данная функция вызывала исключение:

    Traceback (most recent call last):
      File "solve.py", line 11, in
        print(solve(123))
      File "solve.py", line 3, in solve
        assert type(s) == list
    AssertionError

    Существует множество видов исключений, вот только некоторые из них:

    BaseException - базовое исключение, порождающее все остальные

    SystemExit - системное исключение, порождаемое функцией sys.exit при выходе из программы

    KeyboardInterrupt - системное исключение, порождаемое пользовательским выходом из программы с помощью сочетания клавиш 

    ArithmeticError - арифметическая ошибка

    AssertionError - выражение assert ложно

    ImportError - ошибка импорта модуля или его атрибута

    IndexError - индекс не входит в диапазон элементов

    NameError - не найдено переменных с таким именем

    SyntaxError - ошибка синтаксиса

    TypeError - операция к объекту несоответствующего типа

    и т.д.

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

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


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

    try:
    try_suite
    except exception_group1 as variable1:
    except_suite1
    ...
    except exception_groupN as variableN:

    except_suiteN
    else:
    else_suite
    finally:
    finally_suite

    Минимально необходимая конструкция должна состоять из операторов try и except. Все остальные операторы являются необязательными.

    После оператора try записывается вложенная инструкция того, что должна выполнить программа. В случае успешного выполнения, выполнится инструкция после оператора else, если такой есть в программе. Если присутствует оператор finally, тогда вложенная в него инструкция выполняется всегда и в последнюю очередь. Если во время выполнения инструкции try_suite возникает исключение, то оно проверяется на соответствие операторами exceptException_group может быть как единственным видом исключений, так и кортежем нескольких. Приставка as variable1 является необязательной и служит для записи исключения в переменную variable1, чтобы затем к нему можно было обратиться в инструкции except_suite1. Инструкция except_suite1 будет выполняться, когда при выполнении try_suite возникнет исключение, соответствующее exception_group1.

    При работе с исключениями необходимо помнить, что существует определенная иерархия в структуре исключений: 



    Фрагмент структуры исключений

    При отлове конкретных ошибок необходимо указывать их вид в первую очередь, т.е.:

    try:
        try_suite
    except IndexError:
        except_suite1
    except Exception:
        except_suite2

    В данном примере нам необходимо отловить ошибку индекса и выполнить соответствующее действие, а при возникновении любой другой - иное действие. В таком случае, исходя из структуры исключений, мы должны прописать конкретный вид исключения выше, чем более общий. Потому, что при возникновении IndexError, инструкция except_suite2 будет также исполнена, т.к. IndexError является частью вида Exception. И, если, нам необходимо, чтобы except_suite1 выполнился раньше except_suite2, то мы указываем более частный вид исключения. 

    Исключения могут быть полезными, однако есть и несколько недостатков применения исключений. Например, они используются, когда природа ошибки заранее известна, а это частный случай. Гораздо важнее, если бы программа могла сигнализировать о заранее неизвестной ошибке. Помимо этого, бывает невозможно определить какая строка кода будет выполняться после перехвата исключения. В любом случае, перехват исключений не является необходимым инструментом при написании кода, каждый может применять его на свое усмотрение.
    1   2   3   4   5   6   7


    написать администратору сайта