Наконец выражение в питоне
Выполнение следующего кода:
Я получил следующий вывод:
3 хорошо 6 хорошо ой хорошо хорошо Бум
Я не понимаю, почему он печатает жирным шрифтом в порядке? он даже не входит в петлю.
Я хотел бы получить глубокое понимание того, как работают исключения и, наконец, в частности.
Заранее спасибо!
2 ответа
Код в finally
блок всегда выполняется перед выходом из try-catch
блок. Код в finally
Блок выполняется, даже если исключение поймано.
Для подробного объяснения exception handling
в Python см. документацию по Python 3
Если, наконец, присутствует, он указывает обработчик 'cleanup'. Предложение try выполняется, в том числе любые исключения и другие. Если исключение возникает в каком-либо из пунктов и не обрабатывается, то исключение временно сохраняется. Предложение finally выполняется. Если есть сохраненное исключение, оно повторно вызывается в конце предложения finally. Если предложение finally вызывает другое исключение, то сохраненное исключение устанавливается как контекст нового исключения. Если предложение finally выполняет оператор return или break, сохраненное исключение отбрасывается:
Итак, что происходит в четвертой итерации вашего цикла number
установлен в "a"
и когда вы пытаетесь преобразовать его в int
Возникает исключение. Так как нет соответствия except
во внутреннем try
заблокировать исключение сохраняется, finally
блок выполнен, который дает четвертый ok
вывод, а затем сохраненное исключение повторно обрабатывается и перехватывается внешним try
блок.