【问题标题】:Possible to get value where exception occurred? [duplicate]可能在发生异常的地方获得价值? [复制]
【发布时间】:2021-07-25 19:41:15
【问题描述】:

假设我有一个这样的 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

我想知道,是否有可能获得 skipped value
在这种情况下'4'

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

我的问题不仅与这段代码有关,还与 Python 整体有关。

【问题讨论】:

  • 这个问题对于字符串异常更具体吗?如果你得到我,我想知道是否喜欢 python。
  • 那个输出不是程序实际输出的……这个程序甚至不会导致异常,因为'4' * 0 是完全合法的。那么你的实际问题是什么?

标签: python exception try-except


【解决方案1】:

这很简单,你有失败的值并且你抓住了它,只需使用那个值。

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

【讨论】:

  • 是的,这行得通,但就像在其他情况下一样。例如在使用 Dataframe 时。特定行导致异常。有可能处理这样的事情吗?
  • 不确定我是否理解您的问题,但您也可以在数据框中打印该行。
  • 好吧,忘掉Dataframe吧。无论在什么情况下,是否几乎总能获得导致异常的值?
  • 对于 TypeError,是的。你肯定能得到导致错误的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-09
相关资源
最近更新 更多