def doesnt_work(): try: raise RuntimeError("YUP") except Exception as ex: raise finally: print("NOPE") # If you include a return here the exception is never raised return True def works(): _ex = None try: raise RuntimeError("YUP") except Exception as ex: _ex = ex raise finally: print("NOPE") if _ex: raise # If you include a return here the exception is never raised return True print("Doesn't Work:") print(doesnt_work()) print("Works:") print(works())