Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик ошибок / 6 сообщений из 6, страница 1 из 1
07.08.2007, 08:45
    #34709373
Обработчик ошибок
Тружусь над созданием обработчика ошибок своего каркаса приложения. И возникла парочка вопросов. Есть форма, на ней обычная кнопка, в методе Click которой следующий код.

Код: plaintext
1.
2.
objTest = CREATEOBJECT("OBJECT.OBJECT")
MESSAGEBOX("Test")

Также есть глобальный обработчик ошибок.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
PROCEDURE ProgramErrorHandler
LPARAMETERS nError, cMethod, nLine
 
  MESSAGEBOX("Глобальный обработчик ошибок." + CHR( 10 ) + CHR( 13 ) + ;
             "Номер ошибки: " + LTRIM(STR(nError)) + CHR( 10 ) + CHR( 13 ) + ;
             "Номер ошибочной строки: " + LTRIM(STR(nLine)) + CHR( 10 ) + CHR( 13 ) + ;
             "Имя процедуры с ошибкой: " + cMethod, 16 ,"Ошибка")
             
  OnShutDown() && выходим из приложения

ENDPROC

При возникновении ошибки по клику на кнопке не понятно почему проходит сообщение MESSAGEBOX("Test")???? Ведь если произошла ошибка, то процедура должна прерваться, т.к. дальнейшие действия непредсказуемы. И еще, если я вставляю обработчик в методе Error формы с кнопкой, он не выполняется, а выолняется опять глобальный обработчик????

Все разрабатывается под VFP 9.
...
Рейтинг: 0 / 0
07.08.2007, 10:08
    #34709561
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок
...
Рейтинг: 0 / 0
07.08.2007, 10:11
    #34709575
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок
Все правильно. Ты просто сделал вывод сообщения об ошибке. Но не указал что делать.
Точнее указал по умолчанию команду return
Возможно три варианта завершения обработчика ошибок:
1. return - игнорировать ошибку и выполнить код со следующей строки (доп. вариант return to ... для возврата в какую-то верхнюю процедуру)
2. retry - повторить выполнение строки с ошибкой
3. cancel - прервать выполнение программы

Тебе нехватает cancel в конце обработчика

PS Если объект имеет свой обработчик ошибок (прописан метод Error()) глобальный обработчик м.б. вызван только явно.
...
Рейтинг: 0 / 0
07.08.2007, 11:03
    #34709816
Обработчик ошибок
Пишу cancel в обработчике, но в итоге мою прогу начинает колбасить по черному ))) Завершить удается только через диспетчер задач 8(
...
Рейтинг: 0 / 0
07.08.2007, 13:23
    #34710592
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработчик ошибок
Себастьян ПерейраПишу cancel в обработчике, но в итоге мою прогу начинает колбасить по черному ))) Завершить удается только через диспетчер задач 8(Это деструкторы объектов работают :) их cancel не берет. Смотри что там происходит
...
Рейтинг: 0 / 0
08.08.2007, 09:18
    #34712749
Обработчик ошибок
Знаю, что некорректно сделал, но зато работает. Вместо CANCEL поставил RETURN TO на несуществующую процедуру, а так как в обработчике ошибок ошибки не обрабатываются, то все нормально проходит.


OnShutDown()
RETURN TO SomewhereIDoNotBelong
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Обработчик ошибок / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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