Какправильно понять логику обработки ошибок?



  • Такой код (прототип):

    while
         получить элемент
         ................
         ................
         игнорировать ошибки
              загрузить
              .................
              игнорировать ошибки
                   двигать мышь и кликнуть на элемент
                   лог ТЕКСТ_1
              if == 'was error'
                   лог ТЕКСТ_2
                   continue       
         if == 'was error'
              лог ТЕКСТ_2
              continue
    

    У меня вопрос такой. При обработке ошибок есть необходимость писать внутренний блок if, или же достаточно внешнего if при условии, что в логе после if текст будет одинаковый? Другими словами, я в любом случае перейду на внешний if из внутреннего игнорировать ошибки или нет?
    Условие: ошибка возникла во внутреннем игнорировать ошибки.



  • @hubble while я так понимаю с параметром true?
    Не совсем понятно где заканчиваются блоки внутри игнора ошибок. Так как при ошибке на каком либо экшене внутри блока игнорировать ошибки следующие экшены не будут выполнятся.

    И что означает:

    .................
    

    ?



  • Да, while True
    Многоточие означает одна или несколько произвольных строк (не видел смысла их писать).
    Я специально сделал отступы, чтобы визуально отделить все блоки. В коде один блок игнорировать ошибки вложен в другой блок игнорировать ошибки. В первом блоке проверяю загружается/не загружается страница. Обрабатываю. Во втором проверяю нажатие кнопки. И там после нажатия тоже может возникнуть неприятность - не откроется страница или откроется с ошибкой. Тоже обрабатываю. Так вот, если страница открылась, а при нажатии кнопки сгенерировалась (внутренняя игнорировать ошибки) ошибка, достаточно будет иметь одного - внешнего if или же из внутреннего блока программа никак не попадет на внешний if? И тогда без внутреннего if никак.



  • @hubble Честно? В разы быстрее было бы сделать тестовый скрипт и закинуть его сюда. Сразу бы получили ответ\совет\комментарий.



  • @hubble
    я все сделаю Завас

    while(1){
      ignor(  //внешний болк\блок1
        loadPage(url);
        ignor(  //внутренний болк\блок2
          moveAndClick;
        );if(was_error){log(errorText2); succes();}//or fail() || continue
      );if(was_error){log(errorText1); succes();}
    }
    

    переменная вас_error генерируется после каждый раз как закончится блок игнорировать ошибку, варианты:
    Первый: как тут, будет только одна запись в лог или или, потому как так, если возникает любая ошибка хоть внутри и снаружи происходит континуе, сусес или еще какой брейк, все что далее вероятно не должно выполнится,
    Второй вариант: нет succes(), будет только одна запись в лог или или, потому как так,
    если ошибка в загрузке страницы, то до внутреннего блока игнорировать ошибки дело не дойдет,
    если во внутреннем при кликах или еще чем, то ошибка обработана и никаких причин генерировать Вас_error = true у внешнего блока игнорировать ошибки не будет. Всякие остальные поведения можно попридумывать и самим.

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



  • Спасибо ВСЕМ.
    Понятно. Разобрался


Log in to reply