Python异常回溯告诉我行在哪里结束,从哪里开始?

标签 python exception

当跨多行的代码抛出 Python 异常时,例如:

   myfoos = [foo("bar",
                "baz",
                "quux",
                 i) for i in range(10)]

Python 将报告最后一行的行号,并显示该行的代码片段:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    i) for i in range(10)]
NameError: name 'foo' is not defined

有什么方法可以确定第一行是什么?有什么方法可以捕获异常并操纵 traceback对象能够报告类似这样的内容:

Traceback (most recent call last):
 File "test.py", lines 1-4 in <module>
   myfoos = [foo("bar",
                "baz",
                "quux",
                 i) for i in range(10)]
 NameError: name 'foo' is not defined

最佳答案

找到该行的开头将非常困难。您必须解析 Python,或者深入研究已编译的字节代码。标准库中有一些用于解析Python的模块,但我可以根据经验告诉你,解释它们的输出是一门黑术。而且我也不确定编译后的字节码是否有答案......

关于Python异常回溯告诉我行在哪里结束,从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291508/

相关文章:

amazon-web-services - 使用 Lenses 捕获多个异常

java - 如何确定java中的数据库约束冲突?

python - scikit-learn 的 BallTree 出现类型错误

python - 将 numpy 安装到目录后,AWS Lambda 中缺少必需的依赖项 ['numpy' ],如何修复?

python - 为什么捕获 StopIteration 时无法跳出循环?

python 线程崩溃

python - 使用 python Spark 映射另一个文件

python - 如何可靠地检查是否为对象定义了属性?

python - 如何从 netcdf 文件中提取投影在不规则网格上的变量的像素值?

java - java 如何判断没有捕获到异常