You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyCharm中调试try except块内被捕获的异常?

PyCharm调试被try/except捕获的异常的可行方案

完全不需要手动注释try/except代码块,PyCharm本身就原生支持对被捕获的异常触发断点,按下面的配置操作就行:

方法1:配置异常断点触发规则

  • 调出断点配置面板:调试状态下点击调试工具栏里的双红点View Breakpoints按钮,或者直接按快捷键Ctrl+Shift+F8(Windows/Linux)/Cmd+Shift+F8(Mac)
  • 左侧列表选择需要拦截的异常类型:要拦截所有异常就选Any Exception,只需要拦截特定类型异常(比如ValueError、KeyError)就直接搜索对应异常类名添加
  • 右侧配置触发条件:在On raise设置区,默认只勾选了*On uncaught exception(仅未捕获的异常触发断点),你把同区域的On caught exception*(被捕获的异常)勾选上
  • 保存配置后重启调试,哪怕异常被后续的except块捕获处理,程序也会在异常实际抛出的代码行直接暂停,你可以正常查看当前作用域的所有变量、调用栈信息,和普通断点的调试体验没有区别

方法2:临时调试的轻量方案

如果只是临时排查单次问题,不想改全局断点配置被第三方库、框架内部的自处理异常干扰,可以用这个方法:

  • 直接在对应的except代码块第一行打一个普通行断点
  • 调试触发异常后,程序会停在except块内,这时候点击调试工具栏的Drop Frame(回退栈帧)按钮,就能直接跳回异常抛出前的执行位置,往前追溯try块内的执行逻辑

小提示:如果开了全局的被捕获异常断点,大概率会先卡在标准库、第三方依赖内部自己抛了又接住的异常位置,直接按F9(Resume Program,继续运行)跳过即可,不想反复跳的话可以在断点配置的Condition栏加过滤条件,比如限定仅当前项目模块触发:__name__ == '你要调试的模块名',就能过滤掉无关的异常断点。

内容的提问来源于stack exchange,提问作者algebruh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:24:58