簡體   English   中英

在 for 循環 Python 中捕獲異常

[英]Catch Exception in for Loop Python

我有以下for循環:

for batch in loader:
    # do something with batch
    ...

從加載程序中提取批次時,我的循環有時會失敗。 我想做的是類似於下面的代碼片段,但我希望能夠在下一個值上繼續循環,而不是跳過值的 rest。

error_idxs = [] 

try:
    for i,batch in enumerate(loader):
        # do something with batch
        ...
except:
    error_idxs.append(i)

上述方法的問題在於,一旦發生異常,它就會退出循環,而不是繼續下一批。

有沒有辦法在下一批繼續循環?

error_idxs = []
i = 0
while True:
    try:
        batch = next(loader)
        # do something
    except StopIteration:
        break
    except Exception:
        error_idxs.append(i)
    finally:
        i += 1

編輯:將StopIteration StopIterationError刪除continue

您可以改用 while 循環。

在這里,它將在循環內提取,因此可以在循環內捕獲異常並處理並繼續休息!

error_idxs = [] 

i = -1
while i < len(loader) -1:
    try:
        i = i + 1
        batch = loader[i]
        do something witth batch
        ...
    except:
        error_idxs.append(i)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM