Блок else

We use cookies. Read the Privacy and Cookie Policy

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

Данный пример также включает блок else. Любой код, зависящий от успешного выполнения блока try, размещается в блоке else:

print("Give me two numbers, and I'll divide them.")

print("Enter 'q' to quit.")

while True:

first_number = input(" First number: ")

if first_number == 'q':

break

second_number = input("Second number: ")

(1) . .try:

answer = int(first_number) / int(second_number)

(2) . .except ZeroDivisionError:

. . . .print("You can't divide by 0!")

(3) . .else:

print(answer)

Программа пытается выполнить операцию деления в блоке try (1) , который включает только код, способный породить ошибку. Любой код, зависящий от успешного выполнения блока try, добавляется в блок else. В данном случае, если операция деления выполняется успешно, блок else используется для вывода результата (2).

Блок except сообщает Python, как следует поступать при возникновении ошибки ZeroDivisionError (3). Если при выполнении команды из блока try происходит ошибка, связанная с делением на 0, программа выводит понятное сообщение, которое объясняет пользователю, как избежать подобных ошибок. Выполнение программы продолжается, и пользователь не сталкивается с трассировкой:

Give me two numbers, and I'll divide them.

Enter 'q' to quit.

First number: 5

Second number: 0

You can't divide by 0!

First number: 5

Second number: 2

2.5

First number: q

Блок try-except-else работает так: Python пытается выполнить код в блоке try. В блоках try следует размещать только тот код, при выполнении которого может возникнуть исключение. Иногда некоторый код должен выполняться только в том случае, если выполнение try прошло успешно; такой код размещается в блоке else. Блок except сообщает Python, что делать, если при выполнении кода try произошло определенное исключение. Заранее определяя вероятные источники ошибок, вы повышаете надежность своих программ, которые продолжают работать даже при вводе некорректных данных или при недоступности ресурсов. Ваш код оказывается защищенным от случайных ошибок пользователей и сознательных атак.