跨越“raise Exception from e”边界来调试原始异常“e”[重复]

问题描述 投票:0回答:1

我经常发现自己调试的代码看起来像这样:

def fn(a):
  if a != 5:
    raise ValueError('Error')


try:
  fn(a=4)
except Exception as e:
  raise RuntimeError('Caught it') from e

放入

pdb
会将我带到
RuntimeError
,但我想检查原始
ValueError
错误的堆栈跟踪。通常
fn
也运行在一个单独的线程中,使事情变得更加复杂。修改代码替换

raise RuntimeError('Caught it') from e

简单地

raise e

可以解决这个问题,但我想知道是否有一个更干净的解决方案,或者

pdb
中的命令允许“跨越
from e
边界”?

python pdb
1个回答
0
投票

是的,我浏览了你的代码 我更正了。

def fn(a):
  if a != 5:
    raise ValueError('Error')


try:
  fn(a=4)
except Exception as e:
  raise RuntimeError('Caught it') from e


import pdb
pdb.post_mortem(e)

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.