2011-06-29 64 views
3

例如,說func1調用func2,其調用func3,其調用func4,這引發異常。函數調用鏈有多遠纔會執行異常?

如果我試試/除了打電話func1,它是否會發現func4提出的異常?

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

回答

7

異常會傳播到它們到達處理程序或直到它們到達程序或線程的入口點。如果後者發生,您的程序將終止。所以,是的,這個異常會被func1捕獲,除非其他函數之一捕獲它。

3

將異常傳播到調用棧,直到匹配的except塊處理它爲止。如果except塊包含raise指令,它可能會繼續向上移動堆棧。