Как далеко вверх по цепочке вызовов функций проходит исключение? - PullRequest
3 голосов
/ 29 июня 2011

Например, скажем, func1 вызывает func2, который вызывает func3, который вызывает func4, что вызывает исключение.

Если я ставлю попытку / исключая при вызове func1Будет ли он поймать исключение, вызванное func4?

func1 --> func2 --> func3 --> func4 Raises exception

Ответы [ 2 ]

7 голосов
/ 29 июня 2011

Исключения распространяются до тех пор, пока они не достигнут обработчика или не достигнут точки входа для программы или потока.Если это произойдет, ваша программа прекратит работу.Так что да, исключение будет перехвачено в func1, если только одна из других функций не перехватит его первой.

3 голосов
/ 29 июня 2011

Исключение распространяется вверх по стеку вызовов до тех пор, пока соответствующий блок except не обработает его. Он может продолжать перемещаться вверх по стеку, если блок except содержит директиву raise.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...