Марк Лутц, «Изучаем Python», глава 34:
В данном коде присутствуют два активных оператора try — один в функции action1 и один на верхнем уровне модуля.
Функция action2() генерирует исключение TypeError при попытке сложить число 1 и пустой список [], поскольку складывать числа и последовательности нельзя.
«Когда action2 сгенерирует исключение `TypeError`, интерпретатор Python выберет и выполнит самый недавний try с совпадающей конструкцией except, которым в данном случае будет `try` внутри функции action1()».
Поэтому исключение `TypeError` будет перехвачено внутренним обработчиком except TypeError: print('inner try'), и на экран выведется 'inner try'.
Внешний `try` блок не выполнится, так как исключение уже было обработано на более глубоком уровне вложенности.
Post #4230
788
- ❤ 2
- 👍 1
- 👎 1