我可以从pdb引发异常吗? (用于调试)

时间:2015-10-01 21:16:12

标签: python debugging exception try-catch pdb

让我说我有:

def fn1():
    # do some work
    # in some cases raise exception

def fn2():
    # do some work
    try:
        fn1()
    except:
        # do some work

我想通过从pdb中引发异常来测试否定路径。 我试过fn1

(Pdb) raise cliexceptions.NoConnectionError("Could not connect")
*** NoConnectionError: 'Could not connect to SSR'

它打印msg但不退出fn1。 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以通过跳转到except子句中的相应行来手动(部分)模拟异常的影响,如果您还捕获异常对象(在您的情况下不是这样) ,明确地创建它。

# a.py
line1@ def fn2():
line2@    # do some work
line3@    try:
line4@        fn1()
line5@    except:
line6@        print 'exception'

(Pdb) b 4
(Pdb) c
> a.py(4)fn2()
-> fn1()
(Pdb) j 6
> a.py(6)fn2()
-> print 'exception'
(Pdb) e = ValueError(5)
(Pdb) <<the rest of your debugging here>>