powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как узнать стек вызовов в TRY...CATCH?
7 сообщений из 7, страница 1 из 1
Как узнать стек вызовов в TRY...CATCH?
    #32708957
BNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При обработке ошибок в блоке CATCH можно узнать имя процедуры (свойстве .Procedure), где возникла ошибка. Однако узнать, что это, скажем, метод Destroy радости мало. Попробуй потом найди нужный дестрой среди десятков модулей! При традиционной обработке ошибок можно было определить последовательность вызовов модулей с помощью PROGRAM(n), что сильно упрощало задачу. Однако в CATCH это не работает. Может, кто подскажет решение? :)
...
Рейтинг: 0 / 0
Как узнать стек вызовов в TRY...CATCH?
    #32711952
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Внимательно читайте пункт справки VFP : Структурная обработка ошибок уважаемый. Вообще-то в CATCH объект Exception все про всех знает, а уж если он не знает (вне зоны действия) то срабатывает onError метод в цепочке вызовов , и уж если он не сможет обработать тогда старый милый обработчик по ON ERROR.
...
Рейтинг: 0 / 0
Как узнать стек вызовов в TRY...CATCH?
    #32712221
BNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый! Вы не совсем поняли мой вопрос. Предположим, в главном модуле программы Вы основной код заключен в TRY...CATCH. В этом коде Вы создаете объект из др. модуля, в нем создаете еще десяток объектов из разных программных модулей. Где-то в методе Init случилась ошибка. Если ни в одном из классов не предусмотрена своя обработка ошибок, то сработает обработчик главного модуля, где можно узнать лишь, что ошибка случилась в методе Init в N-ой строке. При традиционной обработке ошибок можно было бы узнать всю цепочку вызовов (например AAA.DO/BBB.INIT/CCC.INIT). Вопрос в том, как получить больше информации для локализации места возникновения ошибки.
...
Рейтинг: 0 / 0
Как узнать стек вызовов в TRY...CATCH?
    #32713754
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 BNick

AFAIK никак пока нельзя. MS сделало эту обработку больше как "локальную" -
т.е. предполагается что "внешний" TRY-ENDTRY не будет пытаться всё сам
обработать, а будет использовать инфу словленную во внутренних TRY-ENDTRY (в
соответствующих методах - и "внутренние" передадут Exception-объект наружу
если посчитают нужным передать обработку "далее") - ну а уж коли таких нету,
то ой :(

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
Как узнать стек вызовов в TRY...CATCH?
    #32714784
BNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неудобно очень, что MS не реализовал такую возможность. К сожалению, есть много старых классов и функций, от которых не хочется, да и не получится отказаться. Переписывать всю обработку ошибок по-новому слишком трудоемко :( Вот и пытаюсь скрестить ежа и ужа :) Хотя местами TRY...ENDTRY облегчает жизнь.
...
Рейтинг: 0 / 0
Как узнать стек вызовов в TRY...CATCH?
    #32714809
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Как узнать больше информации о месте возникновения ошибки...
А Вы не пробовали пользоваться Debug API ?
...
Рейтинг: 0 / 0
Как узнать стек вызовов в TRY...CATCH?
    #32715689
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 BNick

А по мне так и не нужно ничего "переделывать" - обработка в событиях Error
вполне прилично работает. А Try-Endtry как раз для _локальных_ ситуаций
очень хороша - ну там где только 1 уровень надо "защитить" от ошибок...

Posted via ActualForum NNTP Server 1.0
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как узнать стек вызовов в TRY...CATCH?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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