【发布时间】:2018-11-03 17:46:06
【问题描述】:
我正在尝试找出触发异常的最后一条尝试指令,例如类型错误。
让我们考虑这个例子。
def test(value1, value2):
print("Hello" + value1 + value2)
如果调用此函数:
test("World!", 5)
test(5, "World!")
在这两种情况下我都会收到 TypeError。但是,在第一次执行中,将尝试(并触发错误)的最后一条语句是"Hello" + value1。在第二次执行中,它将是"Hello World!" + value2。至少这是我的假设,Python 分别执行两者,因为它们是对 add 运算符的“调用”?
不过,两次的错误信息都是一样的。说:
...
print("Hallo" + value1 + value2)
TypeError: must be str, not int
我可以找出最后执行的语句是什么触发了 TypeError 吗?
【问题讨论】:
-
你尝试调试代码吗?
-
不,这是尝试构建动态类型推断器之类的东西的一部分。
-
不,除非您单独解决添加问题,否则您不能这样做
-
字节码级别的 Python 不是分别执行两个添加吗?导致错误的添加不应该是堆栈跟踪中的最后一行(或者可能根本不显示)吗?
标签: python python-3.x exception