有没有可能在发生异常的地方获取值?

Possible to get value where exception occurred?

假设我有一个这样的 for 循环

data = [1, 2, 3, '4', 5]
for d in data:
    print(d * 0)

输出

TypeError: can only concatenate str (not "int") to str

然后如果我使用Try: except

data = [1, 2, 3, '4', 5]
try:
  for d in data:
    print(d * 0)
except TypeError:
    pass

输出

1
2
3

我想知道,是否可以得到跳过的值
在这种情况下 '4'

或者换句话说,是否可以获取导致异常的值?

我的问题不仅与这段代码有关,而且 Python 总体而言。

这很简单,您有失败的值,您抓住了它,只需使用该值即可。

for d in data:
   try:
      print(d+1)
   except TypeError:
      print('error caused by', d)