Python中`except*`语法(ast模块TryStar)是什么?
关于Python中
except*(TryStar)特性的详解 一、特性名称
官方在AST模块里对应的节点是TryStar,语法层面的关键字是except*,社区里一般直接称它为except-star,或者直接叫except*语法,不存在"except-glob""try-star"这类约定俗成的称呼。
二、except*是什么?
它是Python专门为处理**异常组(Exception Group)**设计的语法,属于PEP 654的核心内容,从Python 3.11版本开始正式落地支持。
三、核心用途
普通的except只能捕获单个异常,而except*的作用是从一个**异常组(ExceptionGroup)**中,筛选出所有匹配指定类型的异常进行处理;未被匹配到的异常会被重新打包成新的异常组,继续向上传播。
举个实际示例:
try: raise ExceptionGroup("批量异常", [ ValueError("非法参数"), TypeError("类型不匹配"), ValueError("数值超出范围") ]) except* ValueError: print("处理所有值错误类型的异常")
运行这段代码时,except* ValueError会捕获异常组里的两个ValueError,剩下的TypeError会被重新包装成新的异常组抛出。
四、状态说明
这个特性并没有被弃用,是Python 3.11及以后版本正式支持的功能,主要用于简化多异常场景(比如异步任务批量出错)的处理逻辑。
内容的提问来源于stack exchange,提问作者1j01
相关产品推荐
相关产品推荐

