Наконец выражение в питоне

Выполнение следующего кода:

кликните сюда

Я получил следующий вывод:

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 блок.

Другие вопросы по тегам