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

标签 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'

它打印消息但不退出fn1。 有办法做到这一点吗?

最佳答案

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

# 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>>

关于python - 我可以从 pdb 中引发异常吗? (用于调试),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32896993/

相关文章:

python - 如何使用python提取音频文件的片段?

c++ - 调试涉及使用 : vector, 字符串、STL 的 C++ 代码

Java 日志文件读取器,charAt() 字符串索引超出范围

c - 使用参数调用 GDB

python - sys.exit 是否等同于引发 SystemExit?

java - e.getMessage() 和 e.getLocalizedMessage() 之间的区别

python - 如何标准化热图

Python 解析器 ply 不处理空格

python - 深度嵌套的命名空间包

c++ - 使用 VS 调试 C++。追踪变量变化