|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Привет! Делаю проет на ВФП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 Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 14:47 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
faustt... Проект довольно большой и вкаждую форму и процедуру добавлять обработчик ошибок не красиво. Можно ли както сделать чтобы на все ошибки сгенерированные программой вызывалась определенная програмка, к примеру: Согласен, не красиво, поэтому надо добавлять обработку ошибок в классы обьектов, а уж потом принимать решение вызывать или нет глобальный обработчик. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 14:52 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Код: plaintext
Метод Error() имеет приоритет перед ON ERROR, поэтому должен быть пустой ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 14:53 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Dima T Код: plaintext
Метод Error() имеет приоритет перед ON ERROR, поэтому должен быть пустой Эта команда вызовет обработчик, это я знаю как сделать. Я не знаю где мне ее прописать, чтобы она выполнялась глобально - не зависимо от формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 15:05 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
PaulWist faustt... Проект довольно большой и вкаждую форму и процедуру добавлять обработчик ошибок не красиво. Можно ли както сделать чтобы на все ошибки сгенерированные программой вызывалась определенная програмка, к примеру: Согласен, не красиво, поэтому надо добавлять обработку ошибок в классы обьектов, а уж потом принимать решение вызывать или нет глобальный обработчик. А где дефинируется глобальный обработчик? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 15:06 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
faustt Dima T Код: plaintext
Метод Error() имеет приоритет перед ON ERROR, поэтому должен быть пустой Эта команда вызовет обработчик, это я знаю как сделать. Я не знаю где мне ее прописать, чтобы она выполнялась глобально - не зависимо от формы. Обычно его в стартовом модуле прописывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 15:07 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
faustt[quot Dima T]... чтобы она выполнялась глобально - не зависимо от формы. Если у формы/контрола Error() пустой, то вызовется по ON ERROR иначе вызов из Error() прописывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 15:09 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Dima T faustt[quot Dima T]... чтобы она выполнялась глобально - не зависимо от формы. Если у формы/контрола Error() пустой, то вызовется по ON ERROR иначе вызов из Error() прописывать. А все понял, благодарствую. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 15:14 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
faustt Dima T faustt[quot Dima T]... чтобы она выполнялась глобально - не зависимо от формы. Если у формы/контрола Error() пустой, то вызовется по ON ERROR иначе вызов из Error() прописывать. А все понял, благодарствую. По любому Вам придется перегружать метод Error контролов, поэтому лучше сразу в классе прописать вызов глобального обработчика или вызов соответствующего метода родительского обьекта. Это необходимо сделать, поскольку в дальнейшем возникнут ситуации когда нужно будет подавить ошибку в методе Error или наоборот инициировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 15:27 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
PaulWistПо любому Вам придется перегружать метод Error контролов, поэтому лучше сразу в классе прописать вызов глобального обработчика или вызов соответствующего метода родительского обьекта. Это необходимо сделать, поскольку в дальнейшем возникнут ситуации когда нужно будет подавить ошибку в методе Error или наоборот инициировать. Насчет "По любому" не согласен. Error() крайне редко использую. Тем более в VFP9 есть TRY ... CATCH что еще сильнее сужает область применения Error() ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 15:37 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Dima T Насчет "По любому" не согласен. Error() крайне редко использую. Тем более в VFP9 есть TRY ... CATCH что еще сильнее сужает область применения Error() Не понял, Вы любую конструкцию в любом методе оборачиваете в TRY ... CATCH, или ON Error ловит все ошибки? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 16:19 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
PaulWist Не понял, Вы любую конструкцию в любом методе оборачиваете в TRY ... CATCH, или ON Error ловит все ошибки? ON ERROR ловит все ошибки. некоторые обрабатывает, на остальные спрашивает "Пропустить", "Повторить", "Выход". Во многих случаях достаточно сказать юзеру "пропустить" больное место, а потом разбираться с причиной ошибки. TRY ... CATCH если невозможно быть уверенным в отсутствии ошибок во фрагменте кода. Например обработка чужой DBF у которой может быть испорчен заголовок. Ошибка при открытии. Error() - только в одном случае использовал с объектом IE он почему-то периодически ошибку 1426 дает. Глобально ее проигнорировать неправильно. и в TRY ... CATCH не обернуть. Error() еще не люблю за неудобность пользоваться отлачиком. ON ERROR в стартовом модуле, который при разработке на запускается, а штатный обработчик сам по кнопке SUSPEND отладчик вызывает на строке с ошибкой. Удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.01.2008, 16:57 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Dima T Error() - только в одном случае использовал с объектом IE он почему-то периодически ошибку 1426 дает. Глобально ее проигнорировать неправильно. и в TRY ... CATCH не обернуть. Метод .Refresh() у IE забейте NODEFAULT. Скорей всего, ошибки 1426 не будет в таком разе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2008, 09:30 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Kruchinin Pahan Dima T Error() - только в одном случае использовал с объектом IE он почему-то периодически ошибку 1426 дает. Глобально ее проигнорировать неправильно. и в TRY ... CATCH не обернуть. Метод .Refresh() у IE забейте NODEFAULT. Скорей всего, ошибки 1426 не будет в таком разе. Спасибо. Попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2008, 10:32 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
>>> Error() еще не люблю за неудобность пользоваться отлачиком. ON ERROR в стартовом модуле, который при разработке на запускается, а штатный обработчик сам по кнопке SUSPEND отладчик вызывает на строке с ошибкой. Удобно. ПОДПИСЛАСЯ 1 момент добавлю ИМХО лучфше добавлять инфо об ошибке не в текст. файл а в дбф - удобней тем что если вдруг тебе понадобится скажем list stat , list memo их можно в мемо поля файла ошибок запихнуть и лучше писать этот файл на СЕТЬ -от разных юзеров - чтобы не бегать по лок. машинам - ну а структуру ты можешь любую как твоя душа пожелает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2008, 19:20 |
|
Обработка ошибок
|
|||
---|---|---|---|
#18+
Вопрос по поводу PROGRAM(). В ней надо задать уровень вложенности выполняемой программы если ничего не задавать то покажет ту которая выполняеться на данный момент если 0 или 1 то основную программу. Вопрос тако у меня выполняеться prg, в ней выполняеться процедура и PROGRAM() выдает мне имя процедуры а prg уже приходиться искать вручную, как мне определить уровень вложенности, чтобы показывало имя prg? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2009, 10:05 |
|
|
start [/forum/topic.php?fid=41&fpage=135&tid=1586766]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 342ms |
total: | 473ms |
0 / 0 |