Python 的异常链机制不是简单的“抛出新异常”,而是通过 __cause__ 和 __context__ 两个隐式属性,把多个异常按逻辑关系串联起来,让错误溯源更清晰。
异常链的两种触发方式
Python 提供两种明确建立异常链的语法,对应不同语义:
raise new_exc from old_exc :显式设置 new_exc.__cause__ = old_exc,表示“新异常是因旧异常直接导致的”。这是因果链 ,调试时会显示 The above exception was the direct cause of the following exception。
raise new_exc (在捕获异常的 except 块中):自动设置 new_exc.__context__ = old_exc,表示“新异常是在处理旧异常时发生的”,属于伴随上下文 。默认不抑制旧异常回溯,除非加 from None。
__cause__ 与 __context__ 的区别
两者都存前序异常对象,但用途和显示行为不同:
Vidyo.ai
一款将长视频制作成短片的AI工具
下载
__cause__ 是手动指定的因果关系,优先级高;一旦设置,__context__ 就不会在 traceback 中自动显示。
__context__ 是 Python 自动记录的“上一个未被处理的异常”,仅在无 __cause__ 且未用 from None 抑制时才参与 traceback 渲染。
若想彻底断开链(比如封装异常后不想暴露底层细节),写 raise NewError() from None,此时 __cause__ 为 None,__context__ 虽存在但被忽略。
异常链如何影响 traceback 输出
Python 解释器在打印异常时,会按规则展开链:
先完整打印最内层异常(即最后抛出的那个)。
如果它有 __cause__,就接着打印 __cause__ 异常,并标注“direct cause”。
如果没有 __cause__,但有非空 __context__ 且未被抑制,就打印 __context__ 异常,并标注“during handling of…”。
这个过程可递归,形成多层嵌套 traceback,但只展示显式关联或自动捕获的那一条主线。
实际使用建议
异常链不是炫技工具,关键在提升可维护性:
封装底层库异常时,用 raise MyError("timeout") from e,保留原始超时细节。
做兜底处理(如日志+重抛)时,避免意外激活 __context__,必要时加 from None 控制信息粒度。
自定义异常类无需额外操作——只要用标准 raise ... from ...,链就自动建立;检查链用 exc.__cause__ 或 traceback.print_exception() 即可。
重返未来1999奠基石技能一览,莫基石是一名围绕反击体系的岩系输出型角色,她在场期间能够减少己方全体受到的伤害,并在友方释放反击时附加现实创伤。在通过自身咒语进入反制状态后,无需敌人攻击,奠基石会在回合结束时释放自身的反击攻击敌方全体。释放至终的仪式时,她能进一步减少己方全体受到的伤害,并释放更加强大的反击造成高额现实创伤。 重返未来:1999奠基石角色技能解析: 洞悉被动有3个重点: 1、奠基石...
2026-07-03 · 手游攻略 · 236932
7 月 1 日消息,科技媒体 Android Authority 昨日(6 月 30 日)发布博文,报道称多名 Pixel 用户反馈其手机存在声音异常、漏接电话等问题。在声音异常方面,基于现有用户反馈,至少影响以下 6 款机型,表现为音频出现爆裂声或点击声异常:Pixel 8 ProPixel 9aPixel 9 ProPixel 9 Pro XLPixel 10 Pro XLPixel 10 P...
2026-07-02 · 前沿科技 · 135044
重构:阿塔提斯可缇卡技能及天赋一览,可缇卡适合和远击简谐智能在下路发育保护C位,对线时利用长手和护盾优势频繁和敌人换血消耗,到后游戏中后期超大范围的大招释放得当可以为队伍扭转战局。 重构:阿塔提斯可缇卡技能解析: 一、定位: 可缇卡是一位功能性协导,能够为队友提供少量治疗、护盾、加速以及普攻伤害,同时拥有一定的消耗能力,并能提供大范围的控制效果。 二、分路: 可缇卡适合和远击简谐智能在下路发育保护...
2026-06-27 · 手游攻略 · 229158
重构阿塔提斯伊贺葵技能介绍,伊贺葵适合走下路由协导保护发育,伊贺葵的前期主要依靠1技能消耗对线,对拼能力并不强势,需要解锁大招后配合多个分身和灵活性才能打出输出。优先发育,到游戏后期接管比赛。 重构:阿塔提斯伊贺葵技能解析: 定位: 伊贺葵的定位是远击,她在学习3技能后是非常灵活的简谐智能,拥有普攻可位移并且可以与分身换位的手段,分身还能协同攻击目标叠加印记,可在短时间内快速触发印记伤害,她在游戏...
2026-06-27 · 手游攻略 · 53108
《太吾绘卷:天幕心帷》中选择BD流派是游戏里比较重要的事情,而想要看懂BD流派也需要一些技巧,首先是BD可以分为四个类别,第一种是力大砖飞型,主力功法就是狮相门的大拙手,然后是无限流,主力功法就是界青门的界青暗手快剑。 太吾绘卷天幕心帷BD流派怎么看 本文内容来源于互联网,如有侵权请联系删除。
2026-06-27 · 单机攻略 · 247758
异环卡厄斯技能怎么样,卡厄斯是一位纯粹的数值暴力输出角色,核心打法就是积累资源然后打出高额爆发伤害。他的出现,弥补了相属性缺乏强力主C的空白,为配队提供了新的可能。 异环卡厄斯技能解析: 一、角色定位 相属性男性S级角色,使用双枪的远程主C。卡厄斯围绕“罪业”能量机制运作。通过普攻和技能叠加“罪业”,再消耗“罪业”打出高额强化伤害。 二、技能解析 1、普攻:追猎+裁断+破局 追猎: 卡厄斯挥动武器...
2026-06-24 · 手游攻略 · 159112
三国志王道天下袁绍有什么技能,袁绍每回合稳定召唤箭塔,箭塔继承100%属性、自带20%规避,可抗伤可输出,越打越强。无论是PVE开荒还是PVP召唤流体系,袁绍都是不可替代的核心。 三国志:王道天下袁绍技能解析: 一、武将定位 袁绍属于群雄6御值召唤输出核心,S级盾兵、弓兵双适性,面板标签为均衡·输出·兵刃。 在现行体系中,袁绍基本确认是全游戏公认的开荒人权卡。他的核心价值在于:每回合稳定召唤箭塔,...
2026-06-24 · 手游攻略 · 41605
武林外传:十年之约选哪个职业好,游戏开局统一为“菜鸟”,10级一转是第一个分水岭,千万别瞎选,这决定了你的前期体验(除非后期有洗点道具)。四大职业定位非常清晰。 《武林外传:十年之约》全职业解析: 枪豪(推荐指数:⭐⭐⭐⭐⭐ | 零氪/独狼首选) 定位:主T/近战群攻。血厚防高,自带嘲讽与减伤,核心技「暴雨梨花枪」清怪效率不错。 评价:容错率最高,挂机最稳,副本永远有人要,装备稍微差点也能玩,强烈...
2026-06-24 · 手游攻略 · 216007