Skip to content

Latest commit

 

History

History
91 lines (76 loc) · 3.32 KB

File metadata and controls

91 lines (76 loc) · 3.32 KB

Блок try и except


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

Делить на 0 нельзя, и в процессе работы кода возникнет ошибка, except перехватывает это исключение и задает переменной значение 0

    try:
        k = 1 / 0
    except ZeroDivisionError:
        k = 0
    print(k)
        
    # Вывод
    # 0 

Мы можем указывать какое именно исключение следует перехватывать, отлавливая исключение мы перехватываем и всех его потомков, например, перехватывая ArithmeticError, мы также перехватываем FloatingPointError, OverflowError и ZeroDivisionError.

Если не указывать блоку except ничего, то он будет перехватывать все исключения, то есть так тоже сработает:

    try:
        k = 1 / 0
    except:
        k = 0

    print(k)

    # Вывод
    # 0 

К конструкции перехвата исключений, также срабатывает блок else и finally.

finally - Выполняет блок инструкций в любом случае, было исключение или нет.

else - Выполняется если исключения не было.

То есть если есть блок finally то он сработает в любом случае, если есть блок else и было исключение то все равно сработает только блок finally ибо else работает в случае если ошибки не было, если же есть else и finally и ошибки не было, то с начала сработает блок else а уже потом finally.

Пример с исключением:

    try:
        k = 1 / 0
    except ZeroDivisionError:
        print('Сработало исключение ZeroDivisionError')
    else:
        print('Сработал блок else')
    finally:
        print('Сработал блок finally')

    # Вывод
    # Сработало исключение ZeroDivisionError
    # Сработал блок finally

Пример без исключения:

    try:
        k = 1 / 10
    except ZeroDivisionError:
        print('Сработало исключение ZeroDivisionError')
    else:
        print('Сработал блок else')
    finally:
        print('Сработал блок finally')
        
    # Вывод
    # Сработал блок else
    # Сработал блок finally