Как сделать исключение в исключении при отлове ошибок в python? - PullRequest
1 голос
/ 03 марта 2020

Итак, у меня есть этот код, он работает очень хорошо, но я хочу иметь возможность, если я введу x, это вернет меня к началу списка выбора, который у меня есть

def ask2():
while True:
    try:
        number = int(input('Pick a number in range 1-100: '))
    except ValueError:  # just catch the exceptions you know!
        print('That\'s not a number!')
    else:
        if 1 <= number <= 100:  # this is faster
            print("added")
        else:
            print('Out of range. Try again')

1 Ответ

1 голос
/ 03 марта 2020

Гвидо ван Россум некоторое время работал с Java, который поддерживает эквивалент объединения, за исключением блоков и блока finally, и это прояснило, что должно означать это утверждение :

try:
    block-1 ...
except Exception1:
    handler-1 ...
except Exception2:
    handler-2 ...
else:
    else-block
finally:
    final-block

Код в block-1 выполнен. Если код вызывает exception, проверяются различные блоки, кроме: если исключение относится к классу Exception1, выполняется handler-1; в противном случае выполняется класс Exception2, handler-2 и т. д. Если исключение не возникает, выполняется else-block.

Независимо от того, что произошло ранее, final-block выполняется после завершения блока кода и обработки любых возбужденных исключений. Даже если в обработчике исключений или в else-block произошла ошибка и возникло новое исключение, код в final-block все еще выполняется .


PEP 341: объединение try-кроме и try-finally

...