2014-02-11 24 views
0

我試圖每次出現錯誤時重新運行try-except循環,並且只有在沒有錯誤時才中斷。Python:重新運行嘗試除了循環

loop = True; 
    while loop == True: 
     try: 
      for i in data_names: 
       #do something 
     except Exception, e: 
      e = str(e)[0:100]; 
      parse_error_list.append(str(e)[str(e).rindex(':')+2:str(e).rindex(':')+4]); 

      if len(e) == 0: 
       loop = False; 

作爲一個全面的檢查,將下面讓我退出循環當且僅當沒有錯誤?

編輯:答案是?如果是這樣,這是最有效的實施? ...

loop = True; 
    while loop: 
     try: 
      for i in data_names: 
       #do something 
     except Exception, e: 
      e = str(e)[0:100]; 
      parse_error_list.append(str(e)[str(e).rindex(':')+2:str(e).rindex(':')+4]); 

     if e: 
      loop = False; 
+0

壓痕似乎搞砸了。你能否修正代碼中的縮進? –

+0

我能看到的唯一的中斷條件是,如果異常的字符串表示是0長度的;即從不。另外使用* actual *'break'是一個更好的方式來打破循環,而不是指定一個變量來爲你做。 – roippi

+0

像下面這樣? 嘗試: for data_names: #do except exception,e: e = str(e)[0:100]; (str)(e)[str(e).rindex(':')+ 2:str(e).rindex(':')+ 4]); 休息;爲什麼len(e)== 0沒有錯誤會打破循環? – Black

回答

1

最巧妙的解決方案可能會類似於:

while True: 
    try: 
     for i in data_names: 
      #do something 
    except Exception, e: 
     #log or otherwise handle exception 
    else: 
     break