Гость
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Откуда запущен Exception? / 5 сообщений из 5, страница 1 из 1
08.06.2011, 23:50
    #37301521
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Откуда запущен Exception?
Ситуация:
Функция nvo_main.uf_main вызывает nvo_A.uf_1; в свою очередь, nvo_A.uf_1 вызывает nvo_B.uf_2.

nvo_B.uf_2 запускает (throws) Exception; nvo_A.uf_1 НЕ обрабатывает его, а передаёт дальше, а вот nvo_main.uf_main уже перехватывает и обрабатывает этот Exception.

Вопрос: есть ли возможность в uf_main узнать какой скрипт какого объекта запустил исключение (т.е. в данном примере получить "nvo_B.uf_2")? А ещё лучше = вообще "развернуть" стек вызовов? Разумеется, эту информацию можно тупо загнать в Exception в nvo_B.uf_2 используя SetMessage (вместе с описанием ошибки), но, может, есть решение поэлегантней?

Использую PB8.

Thanx!
...
Рейтинг: 0 / 0
09.06.2011, 11:32
    #37302080
Riska
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Откуда запущен Exception?
Ursego,
Не знаю, поможет ли, есть функции PopulateError() и SignalError(). Туда можно вогнать, в какой функции чаво происходит.
...
Рейтинг: 0 / 0
09.06.2011, 20:17
    #37303246
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Откуда запущен Exception?
PopulateError() - это значит лишние строки кода когда эксепшен запускается, а моя цель - укоротить скрипты.

Пока что решил проблему просто - создав в своём NVO функцию uf_throw(as_msg, as_script), имеющую следующий код:

Код: plaintext
1.
2.
3.
4.
5.
Exception	le

le = create Exception
le.SetMessage("Object: nvuo_XXX~n~r~n~rScript: " + as_script + "~n~r~n~rError: " + as_msg)

throw le

Так что запуск эксепшена теперь довольно компактен (правда, передачу нмени скрипта элегантным не назовёшь):

Код: plaintext
if <something happened> then uf_throw("Something happened!", "uf_XXX")
...
Рейтинг: 0 / 0
09.06.2011, 20:24
    #37303249
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Откуда запущен Exception?
К тому-же, если делать такую функцию универсальной (в отдельном объекте), то ещё и имя объекта придётся передавать...
...
Рейтинг: 0 / 0
19.01.2012, 23:59
    #37623337
Ursego
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Откуда запущен Exception?
Если кому интересно, решение проблемы описано тут (может, не идеальное, но удобное практически - жить можно).
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Откуда запущен Exception? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]