【问题标题】:Python: Re-displaying errors together after being ignoredPython:被忽略后一起重新显示错误
【发布时间】:2021-06-22 16:30:18
【问题描述】:

我正在使用引发 KeyError 的方法。我想通过一个 for 循环运行它,然后在循环完成后一次显示所有这些错误。这可能吗?

我正在尝试,除非post 表示要忽略 KeyError(s)。

bad_list = []
for i in range (10):
   try:
      bad_list.append(checkermethod(i)) #checker method raises TypeError when called
   except KeyError:
      continue
    
if bad_list:
   raise KeyError('\n'.join(bad_list))

我试图通过附加一个列表来捕捉这些错误,但它总是空的,所以它并没有真正附加任何东西。这是有道理的,因为我实际上忽略了这些错误,但是有没有关于如何以另一种方式做到这一点的想法?

【问题讨论】:

  • 您的方法checkermethod() 不依赖于计数器i。您调用它 10 次和 10 次失败,这意味着没有返回结果。那么你的bad_list 到底应该包含什么?异常、索引或其他?
  • 在这种情况下,它只是一个返回 KeyError 的虚拟方法。但我会用 i 变量更新它,这样它就更清楚了。
  • 目前还不清楚你要做什么。
  • 我正在尝试将错误一起显示,而不是在第一个 keyerror 后循环中断

标签: python list keyerror


【解决方案1】:

我找到了解决办法:

bad_list = []
for i in range (10):
   try:
      checkermethod(i) #checker method raises TypeError when called
   except KeyError as e:
      bad_list.append(e.args[0])
    
if bad_list:
   raise KeyError('\n'.join(bad_list))

【讨论】:

    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多