繁体   English   中英

继续循环,尽管for循环中有异常

[英]Continue looping despite exception in for loop

我正在编写一些代码以遍历XML,但遇到了一个棘手的问题。 当我迭代时,我正在循环中解压值。 打开包装时,有时会出现异常。 我想知道尽管有例外,如何继续循环。 我明白我可以解压使用循环内的值tryexcept有,但我不知道是否有一个更优雅的方式来做到这一点,同时利用for循环拆包语法。 下面的简短示例中的问题是由于元素过多,但我希望捕获此异常和其他潜在异常。

请参阅下面的问题类似示例。

lst = [(1,2), (3,4), (5,6,7), (8,9)]
try:
    for fst, snd in lst:
        print(fst, snd)
except:
    print("exception")

其输出将是:

1 2
3 4
exception

我想知道如何处理它,以使代码前进到(8,9)上。 谢谢!

如果元组肯定包含至少两个项目,这似乎很简单。

for f,s,*r  in [(1,2), (3,4), (5,6,7), (8,9)]:
    print(f,s)

有一种方法可以做到这一点,但这有点丑陋:

lst = iter(lst) # so it wont restart

while True:
  try:
    for fst, snd in lst:
      # stuff
    break # if the loop was successful
  except:
    pass

您可以使用列表理解功能来首先避免错误:

for fst, snd in [x for x in lst where len(x) == 2]:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM