Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сделать 'Ignore' в TRY ? / 5 сообщений из 5, страница 1 из 1
07.02.2006, 18:56
    #33529701
Wonder2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать 'Ignore' в TRY ?
Добрый вечер, - мне нужно в случае ошибки просто её "незаметно" пропустить
Как это сделать?
...
Рейтинг: 0 / 0
07.02.2006, 19:20
    #33529769
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать 'Ignore' в TRY ?
Должна быть часть ошибки исключений (CATCH)
TRY
..
CATCH
...
ENDTRY
С уважением, Алексей
...
Рейтинг: 0 / 0
07.02.2006, 20:20
    #33529849
Wonder2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать 'Ignore' в TRY ?
Спасибо, я имел ввиду это, я уже сделал просто присвоение переменной
просто я думал нужна команда типа retry, можно вообще ничего не написать...
наверно....
...
Рейтинг: 0 / 0
09.02.2006, 10:28
    #33533177
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать 'Ignore' в TRY ?
ON ERROR ? '8('
wrongCommand()
ON ERROR


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
12.02.2006, 02:31
    #33539238
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать 'Ignore' в TRY ?
Hi Wonder2!

Сделать Ignore (т.е. пропустить ошибку и продолжить исполнение кода),
равно как и Retry (т.е. повторно попытаться выполнить команду вызвавшую
ошибку) при использовании структурной обработки ошибок невозможно в
принципе. При возникновении исключения внутри блока try исполнение уже
никаким образом не может быть возвращено внутрь этого блока - только во
внешний код, либо в соответствующий вышележащий обработчик исключений.
Т.е. чтобы "эмулировать" вот такой "старый" код
Код: plaintext
1.
2.
3.
4.
ON ERROR * && Это просто 
подавляет любую ошибку
do_this
do_that
do_some_other_thing
используя структурную обработку ошибок нужно написать примерно следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
try
  do_this
catch
endtry
try
  do_that
catch
endtry
try
  do_some_other_thing
catch
endtry
Для реализации же логики RETRY придётся каждую команду помимо "своего" блока
try ещё и в свой отдельный бесконечный цикл вкладывать, выход из которого
происходит лишь при успешном выполнении соответствующей команды.
Короче IMHO не стоит даже пытаться применять совместно со структурной
обработкой ошибок старые подходы - т.е. логику работы Ignore (and Continue)
и тем более Retry. Как говорится умерла так умерла.
Кстати для эмуляции работы try блока старыми средствами тоже приходится
неслабо извращаться, нечто типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
LOCAL lnError
lnError =  0 
ON ERROR lnError = ERROR()
do_this
IF lnError #  0 
  RETURN
ENDIF
do_that
IF lnError #  0 
  RETURN
ENDIF
do_some_other_thing
IF lnError #  0 
  RETURN
ENDIF
....
Ну это если вся процедура целиком должна быть помещена в try блок, а если
лишь её небольшой кусок - то ещё более некрасиво - скажем с циклом в котором
размещён подобный код, но с EXIT вместо RETURN - ну и с кодом по сути
эквивалентным catch блоку "после" этого цикла, но окруженному IF-ом
отключающим его исполнение если ошибки по ходу не возникло.

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


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