如何在Python异常处理流程中提前跳出,不执行通用异常处理逻辑?
Python异常处理分支提前跳过通用逻辑的实现方法
注意:Python的异常捕获不存在C语言switch语句的穿透特性,只要匹配到某一个except分支,就会自动终止异常匹配流程,不会执行后续任何其他except块的代码。
场景1:仅需跳过后续异常处理分支
你不需要额外添加任何跳出语句,原生语法规则已经满足需求。示例代码如下:
try: # 执行业务逻辑 do_f() except (ex1, ex2, ex3) as e: # 处理指定三类异常 print("处理ex1/ex2/ex3异常") except special_exception as e: # 处理特殊异常 print("处理special_exception") # 执行完当前分支代码后,会自动跳过后续所有except分支,不会进入通用异常处理 except Exception as e: # 通用异常处理,前面已经匹配成功的异常不会走到该分支 print("通用异常处理") # 所有匹配成功的except分支执行完后,会直接走到此处继续执行 print("try-except结构执行完成")
场景2:处理完异常后直接终止当前函数运行
如果你不仅要跳过通用异常处理,还要直接结束当前函数的执行,直接在对应分支添加return语句即可:
def demo_func(): try: do_f() except special_exception as e: print("处理special_exception") # 直接返回函数,后续的通用异常处理、函数剩余逻辑都不会执行 return except Exception as e: print("通用异常处理") # 函数其他业务逻辑 print("函数剩余逻辑执行")
内容的提问来源于stack exchange,提问作者Adrian Sevcenco
相关产品推荐
相关产品推荐

