2014-02-11 2 views
0

Я пытаюсь перезапустить цикл try-except каждый раз, когда есть ошибка, и только прерывается, когда нет ошибки.Python: Rerun try-except loop

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; 

В качестве проверки вменяемости, будет следующее позволит мне выйти из цикла, если и только если нет ошибок?

EDIT: Ответ? Если да, то это наиболее эффективная реализация? ...

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-length; т. е. никогда. Также использование * actual * 'break' является гораздо более простым способом выйти из цикла, чем указать переменную, чтобы сделать это для вас. – roippi

+0

Как показано ниже? try: для i in data_names: #do что-то за исключением исключения, e: e = str (e) [0: 100]; parse_error_list.append (str (e) [str (e) .rindex (':') + 2: str (e) .rindex (':') + 4]); break; Почему 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