when we call this functionwe see that the first print statement executesas well as the first line in the no_return function but once the exception is raisednothing else executescall_exceptor(call_exceptor starts here am about to raise an exception traceback (most recent call last)file ""line in file "method_calls_excepting py"line in call_exceptor no_return(file "method_calls_excepting py"line in no_return raise exception("this is always raised"exceptionthis is always raised we'll soon see that when the interpreter is not actually taking shortcut and exiting immediatelywe can react to and deal with the exception inside either method indeedexceptions can be handled at any level after they are initially raised look at the exception' output (called tracebackfrom bottom to topand notice how both methods are listed inside no_returnthe exception is initially raised thenjust above thatwe see that inside call_exceptorthat pesky no_return function was called and the exception bubbled up to the calling method from thereit went up one more level to the main interpreterwhichnot knowing what else to do with itgave up and printed traceback handling exceptions now let' look at the tail side of the exception coin if we encounter an exception situationhow should our code react to or recover from itwe handle exceptions by wrapping any code that might throw one (whether it is exception code itselfor call to any function or method that may have an exception raised inside itinside try except clause the most basic syntax looks like thistryno_return(exceptprint(" caught an exception"print("executed after the exception"