Перейти к содержимому

Фотография

Как избежать записи ошибки в лог или получить её ID?


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 husky

husky

    Новый участник

  • Members
  • Pip
  • 35 сообщений

Отправлено 19 февраля 2009 - 12:56

Проблема такая:
В настройках Run-Time Settings не стоит пометка "Continue on Error", значит скрипт, после получения ошибки, идет автоматически выполнять action "vuser_end".
В "vuser_end" у меня записана некая функция "FuncError()", которую скрипт должен выполнить при обнаружении ошибки. Но данную функцию "FuncError()" он должен выполнить лишь в том случае, если будет обнаружена ошибка "Error -26368" (получена в результате выполнения функции "web_global_verification()"). Eсли же скрипт вышел в "vuser_end" по какой-либо другой ошибке, то эта функция "FuncError()" не должна выполняться, иначе будет сгенерирована ошибка "Error -27979: Requested form not found" в лог и дальнейшие действия в action "vuser_end" не выполнятся.

Вопрос: как можно организовать условие выполнения функции "FuncError()" лишь в случае обнаружения ошибки "Error -26368"?

Возможно, у кого-то будут идеи про использование встроенных функций типа lrt_gettperrno() для получения ID ошибки? Я не понял как это применить.
  • 0

#2 Troubleshooter

Troubleshooter

    Опытный участник

  • Members
  • PipPipPipPip
  • 398 сообщений
  • Город:Киев

Отправлено 19 февраля 2009 - 14:38

Проблема такая:
В настройках Run-Time Settings не стоит пометка "Continue on Error", значит скрипт, после получения ошибки, идет автоматически выполнять action "vuser_end".
В "vuser_end" у меня записана некая функция "FuncError()", которую скрипт должен выполнить при обнаружении ошибки. Но данную функцию "FuncError()" он должен выполнить лишь в том случае, если будет обнаружена ошибка "Error -26368" (получена в результате выполнения функции "web_global_verification()"). Eсли же скрипт вышел в "vuser_end" по какой-либо другой ошибке, то эта функция "FuncError()" не должна выполняться, иначе будет сгенерирована ошибка "Error -27979: Requested form not found" в лог и дальнейшие действия в action "vuser_end" не выполнятся.

Вопрос: как можно организовать условие выполнения функции "FuncError()" лишь в случае обнаружения ошибки "Error -26368"?

Возможно, у кого-то будут идеи про использование встроенных функций типа lrt_gettperrno() для получения ID ошибки? Я не понял как это применить.

Встречный вопрос, зачем вам это нужно? Сформулируйте задачу возможно есть более рациональное решение.
  • 0

#3 husky

husky

    Новый участник

  • Members
  • Pip
  • 35 сообщений

Отправлено 19 февраля 2009 - 16:01

Проблема такая:
В настройках Run-Time Settings не стоит пометка "Continue on Error", значит скрипт, после получения ошибки, идет автоматически выполнять action "vuser_end".
В "vuser_end" у меня записана некая функция "FuncError()", которую скрипт должен выполнить при обнаружении ошибки. Но данную функцию "FuncError()" он должен выполнить лишь в том случае, если будет обнаружена ошибка "Error -26368" (получена в результате выполнения функции "web_global_verification()"). Eсли же скрипт вышел в "vuser_end" по какой-либо другой ошибке, то эта функция "FuncError()" не должна выполняться, иначе будет сгенерирована ошибка "Error -27979: Requested form not found" в лог и дальнейшие действия в action "vuser_end" не выполнятся.

Вопрос: как можно организовать условие выполнения функции "FuncError()" лишь в случае обнаружения ошибки "Error -26368"?

Возможно, у кого-то будут идеи про использование встроенных функций типа lrt_gettperrno() для получения ID ошибки? Я не понял как это применить.

Встречный вопрос, зачем вам это нужно? Сформулируйте задачу возможно есть более рациональное решение.


Задача такая:
Во время работы приложения скрипт отлавливает текст на странице:

web_global_verification(
"Text/IC=Error on page",
"Fail=Found",
"ID=TemporaryUnavailable", LAST);

Когда на странице появляется данное сообщение ("Error on page"), то здесь же на HTML странице появляется некая кнопочка под названием "Request...". При нажатии на эту кнопочку генерится error лог в лог приложения (это нужно для наших разработчиков).
Так вот задача состоит в том, что при появлении ошибки "Error on page" юзер должен нажать на кнопку "Request..." и выйти из приложения, проследовав на функцию Logout(), при этом желательно, чтобы никаких ошибок в лог скрипта не генерилось.
Кнопка "Request..." представляет из себя javascript, на нее я нажимаю функцией:

web_submit_form("Request",
ITEMDATA,
"Name=request", "Value=true", ENDITEM,
LAST);
  • 0

#4 Jackie

Jackie

    Постоянный участник

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Москва

Отправлено 20 февраля 2009 - 10:55

/********************** vuser_init *********************/
int click_on_button;

vuser_init()
{
click_on_button=web_global_verification(
"Text/IC=is temporarily unavailable",
"Fail=Found",
"ID=TemporaryUnavailable", LAST);


return 0;
}

/*********************** Action *********************/


Action()
{

web_url("bla-bla-bla" ....... LAST);

web_url("la-la-la" ....... LAST);


return 0;

}


/********************* vuser_end *************************/
extern int click_on_button;

vuser_end()
{

if (click_on_button == LR_PASS)
lr_message("It's OK");
else
web_submit_form("Request",ITEMDATA,"Name=request", "Value=true",ENDITEM, LAST);

}


/*******************************************************************/
  • 0

#5 husky

husky

    Новый участник

  • Members
  • Pip
  • 35 сообщений

Отправлено 20 февраля 2009 - 11:44

/********************** vuser_init *********************/
int click_on_button;

vuser_init()
{
click_on_button=web_global_verification(
"Text/IC=is temporarily unavailable",
"Fail=Found",
"ID=TemporaryUnavailable", LAST);


return 0;
}

/*********************** Action *********************/


Action()
{

web_url("bla-bla-bla" ....... LAST);

web_url("la-la-la" ....... LAST);


return 0;

}


/********************* vuser_end *************************/
extern int click_on_button;

vuser_end()
{

if (click_on_button == LR_PASS)
lr_message("It's OK");
else
web_submit_form("Request",ITEMDATA,"Name=request", "Value=true",ENDITEM, LAST);

}


/*******************************************************************/


Спасибо!
Попробую.
  • 0

#6 berkut788

berkut788

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:berkut
  • Город:Москва

Отправлено 08 сентября 2009 - 07:35

Jackie, спасибо.

Вопрос: как обойти проблему returned values в web_global_verification?
web_global_verification находит ошибку (сообщение об ошибке на странице), но возвращает всегда LR_PASS (0).
  • 0

#7 Jackie

Jackie

    Постоянный участник

  • Members
  • PipPipPip
  • 206 сообщений
  • Город:Москва

Отправлено 09 сентября 2009 - 15:10

Jackie, спасибо.

Вопрос: как обойти проблему returned values в web_global_verification?
web_global_verification находит ошибку (сообщение об ошибке на странице), но возвращает всегда LR_PASS (0).



Действительно, коллеги web_global_verification всегда возвращает LR_PASS. Баг, однако :)

другой способ решения этого вопроса я вижу в следующем:
1) web_global_verification оставляем включенным
2) пишем метод, в котором web_req_save_param отлавливает нужную ошибку. Web_req_save_param должен отрабатывать с атрибутом "Notfound=warning" ("Notfound=empty")
3) вызываем этот метод перед каждым шагом скрипта.
4) в vuser_end записываем обработку ошибки. Что нить типа
if (strcmp(lr_eval_string("{ВАШ ЗАХВАЧЕННЫЙ ПАРАМЕТР}"),"") != 0) //если захваченный параметр не пуст
web_url("Нажать на кнопку Request") //кликнуть на кнопку
.....
LAST);
прицип работы здесь получится следующий. Web_global_verification отловит ошибку и зафайлит скрипт, но перед этим еще web_reg_save_param успеет отловить нужное значение.
При переходе же в vuser_end оператор if проверяет, что динамический параметр не пустой, и включает соответствующую обработку.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных