jumps back to the most recently entered try statement with matching except clauseand the program resumes after that try statement except clauses intercept and stop the exception--they are where you process and recover from exceptions figure - nested try/finally statementswhen an exception is raised herecontrol returns to the most recently entered try to run its finally statementbut then the exception keeps propagating to all finallys in all active try statements and eventually reaches the default top-level handlerwhere an error message is printed finally clauses intercept (but do not stopan exception--they are for actions to be performed "on the way out tion func sends control back to the handler in func and then the program continues within func by contrastwhen try statements that contain only finally clauses are nestedeach finally block is run in turn when an exception occurs--python continues propagating the exception up to other trysand eventually perhaps to the top-level default handler (the standard error message printeras figure - illustratesthe finally clauses do not kill the exception--they just specify code to be run on the way out of each try during the exception propagation process if there are many try/finally clauses active when an exception occursthey will all be rununless try/except catches the exception somewhere along the way in other wordswhere the program goes when an exception is raised depends entirely upon where it has been--it' function of the runtime flow of control through the scriptnot just its syntax the propagation of an exception essentially proceeds backward through time to try statements that have been entered but not yet exited this propagation stops as soon as control is unwound to matching except clausebut not as it passes through finally clauses on the way designing with exceptions