powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработка ошибок
18 сообщений из 18, страница 1 из 1
Обработка ошибок
    #35068590
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Делаю проет на ВФП9. Проект довольно большой и вкаждую форму и процедуру добавлять обработчик ошибок не красиво. Можно ли както сделать чтобы на все ошибки сгенерированные программой вызывалась определенная програмка, к примеру:

Procedure errhand
Parameter merror, Mess, mess1, mprog, mlineno

fp=Fopen('errlog.txt',1)

If fp=-1
Messagebox("Unable to open errlog.txt",16)
Else
Fputs(fp,"---------------------" + Transform(Datetime()) + "---------------------")
Fputs(fp,"Error number: " + Ltrim(Str(merror)))
Fputs(fp,"Error message: " + Mess)
Fputs(fp,"Line of code with error: " + mess1)
Fputs(fp,"Line number of error: " + Ltrim(Str(mlineno)))
Fputs(fp,"Program with error: " + mprog)
Fclose(fp)
Endif

Спасибо.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068617
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustt... Проект довольно большой и вкаждую форму и процедуру добавлять обработчик ошибок не красиво. Можно ли както сделать чтобы на все ошибки сгенерированные программой вызывалась определенная програмка, к примеру:


Согласен, не красиво, поэтому надо добавлять обработку ошибок в классы обьектов, а уж потом принимать решение вызывать или нет глобальный обработчик.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068620
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
on error do MyError with error(),program(),message(),message( 1 ),lineno()
где MyError твой обработчик ошибок.
Метод Error() имеет приоритет перед ON ERROR, поэтому должен быть пустой
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068693
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Код: plaintext
on error do MyError with error(),program(),message(),message( 1 ),lineno()
где MyError твой обработчик ошибок.
Метод Error() имеет приоритет перед ON ERROR, поэтому должен быть пустой

Эта команда вызовет обработчик, это я знаю как сделать. Я не знаю где мне ее прописать, чтобы она выполнялась глобально - не зависимо от формы.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068701
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist faustt... Проект довольно большой и вкаждую форму и процедуру добавлять обработчик ошибок не красиво. Можно ли както сделать чтобы на все ошибки сгенерированные программой вызывалась определенная програмка, к примеру:


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

А где дефинируется глобальный обработчик?
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068707
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustt Dima T
Код: plaintext
on error do MyError with error(),program(),message(),message( 1 ),lineno()
где MyError твой обработчик ошибок.
Метод Error() имеет приоритет перед ON ERROR, поэтому должен быть пустой

Эта команда вызовет обработчик, это я знаю как сделать. Я не знаю где мне ее прописать, чтобы она выполнялась глобально - не зависимо от формы.
Обычно его в стартовом модуле прописывают.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068712
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustt[quot Dima T]... чтобы она выполнялась глобально - не зависимо от формы.
Если у формы/контрола Error() пустой, то вызовется по ON ERROR иначе вызов из Error() прописывать.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068719
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068740
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T faustt[quot Dima T]... чтобы она выполнялась глобально - не зависимо от формы.
Если у формы/контрола Error() пустой, то вызовется по ON ERROR иначе вызов из Error() прописывать.

А все понял, благодарствую.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068745
faustt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ Главный (стартовый) файл проекта

Спасибо, почитаю. Полезная инфа.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068824
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustt Dima T faustt[quot Dima T]... чтобы она выполнялась глобально - не зависимо от формы.
Если у формы/контрола Error() пустой, то вызовется по ON ERROR иначе вызов из Error() прописывать.

А все понял, благодарствую.

По любому Вам придется перегружать метод Error контролов, поэтому лучше сразу в классе прописать вызов глобального обработчика или вызов соответствующего метода родительского обьекта. Это необходимо сделать, поскольку в дальнейшем возникнут ситуации когда нужно будет подавить ошибку в методе Error или наоборот инициировать.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35068897
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWistПо любому Вам придется перегружать метод Error контролов, поэтому лучше сразу в классе прописать вызов глобального обработчика или вызов соответствующего метода родительского обьекта. Это необходимо сделать, поскольку в дальнейшем возникнут ситуации когда нужно будет подавить ошибку в методе Error или наоборот инициировать.
Насчет "По любому" не согласен. Error() крайне редко использую. Тем более в VFP9 есть TRY ... CATCH что еще сильнее сужает область применения Error()
...
Рейтинг: 0 / 0
Обработка ошибок
    #35069104
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Насчет "По любому" не согласен. Error() крайне редко использую. Тем более в VFP9 есть TRY ... CATCH что еще сильнее сужает область применения Error()

Не понял, Вы любую конструкцию в любом методе оборачиваете в TRY ... CATCH, или ON Error ловит все ошибки?
...
Рейтинг: 0 / 0
Обработка ошибок
    #35069270
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist
Не понял, Вы любую конструкцию в любом методе оборачиваете в TRY ... CATCH, или ON Error ловит все ошибки? ON ERROR ловит все ошибки. некоторые обрабатывает, на остальные спрашивает "Пропустить", "Повторить", "Выход". Во многих случаях достаточно сказать юзеру "пропустить" больное место, а потом разбираться с причиной ошибки.

TRY ... CATCH если невозможно быть уверенным в отсутствии ошибок во фрагменте кода. Например обработка чужой DBF у которой может быть испорчен заголовок. Ошибка при открытии.

Error() - только в одном случае использовал с объектом IE он почему-то периодически ошибку 1426 дает. Глобально ее проигнорировать неправильно. и в TRY ... CATCH не обернуть.

Error() еще не люблю за неудобность пользоваться отлачиком. ON ERROR в стартовом модуле, который при разработке на запускается, а штатный обработчик сам по кнопке SUSPEND отладчик вызывает на строке с ошибкой. Удобно.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35070399
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Error() - только в одном случае использовал с объектом IE он почему-то периодически ошибку 1426 дает. Глобально ее проигнорировать неправильно. и в TRY ... CATCH не обернуть.

Метод .Refresh() у IE забейте NODEFAULT. Скорей всего, ошибки 1426 не будет в таком разе.
...
Рейтинг: 0 / 0
Обработка ошибок
    #35070599
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin Pahan Dima T
Error() - только в одном случае использовал с объектом IE он почему-то периодически ошибку 1426 дает. Глобально ее проигнорировать неправильно. и в TRY ... CATCH не обернуть.

Метод .Refresh() у IE забейте NODEFAULT. Скорей всего, ошибки 1426 не будет в таком разе.
Спасибо. Попробую
...
Рейтинг: 0 / 0
Обработка ошибок
    #35072640
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>> Error() еще не люблю за неудобность пользоваться отлачиком. ON ERROR в стартовом модуле, который при разработке на запускается, а штатный обработчик сам по кнопке SUSPEND отладчик вызывает на строке с ошибкой. Удобно.

ПОДПИСЛАСЯ
1 момент добавлю
ИМХО лучфше добавлять инфо об ошибке не в текст. файл
а в дбф -
удобней тем что если вдруг тебе понадобится
скажем list stat , list memo их можно в мемо поля файла ошибок запихнуть
и лучше писать этот файл на СЕТЬ -от разных юзеров - чтобы не бегать по лок. машинам
- ну а структуру ты можешь любую как твоя душа пожелает :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Обработка ошибок
    #35818892
Alex-ZZZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос по поводу PROGRAM(). В ней надо задать уровень вложенности выполняемой программы если ничего не задавать то покажет ту которая выполняеться на данный момент если 0 или 1 то основную программу. Вопрос тако у меня выполняеться prg, в ней выполняеться процедура и PROGRAM() выдает мне имя процедуры а prg уже приходиться искать вручную, как мне определить уровень вложенности, чтобы показывало имя prg?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработка ошибок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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