Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.20;
Скачать: CL | DM;

Вниз

Продолжение выполнения кода со след. стр. после ошибки   Найти похожие ветки 

 
AGGRESSOR ©   (2004-06-07 16:51) [0]

VBA:
on error resume next

Delphi:
???


 
Digitman ©   (2004-06-07 17:05) [1]

try
 .. строка N
except
end;
.. строка N + 1


 
AGGRESSOR ©   (2004-06-07 17:10) [2]

Digitman ©, у меня 24 строки кода. Предлагаешь каждую заключать в отдельный блок трай-эксептов? :-/


 
Sandman25 ©   (2004-06-07 17:13) [3]

[2] AGGRESSOR ©   (07.06.04 17:10)

Что делают эти 24 строки? Ошибка возможна на любой из них?


 
Digitman ©   (2004-06-07 17:14) [4]


> AGGRESSOR ©   (07.06.04 17:10) [2]


разумной альтернативы у тебя нет

любая строчка из 24-х упомянутых может вызвать неожидаемое тобой исключение

извращаться же с коррекцией кадров стека  - себе дороже


 
Digitman ©   (2004-06-07 17:19) [5]


> AGGRESSOR


с др.стороны, неразумно предполагать, что любая из этих 24-х строчек потенциальна с т.з. возможных непредвиденных исключений

блок try..except предназначен, как правило, для перехвата/обработки ожидаемых исключений, а не "всяка разна без разбору"


 
AGGRESSOR ©   (2004-06-07 17:20) [6]

Sandman25 ©, эти строки- команды на запуск SQL-запросов (TQuery). Допустим, я хочу сделать дроп тейбл, но таблицы в базе нет. Вот вам и ошибка, а мне нужно чтоб все продолжало работать. Конечно, не все 24 строки потенциально опасны, но 15 точно.

А разве нету какой-то директивы компилятора который бы заставил систему игнорировать ошибки?


 
Sandman25 ©   (2004-06-07 17:26) [7]

[6] AGGRESSOR ©   (07.06.04 17:20)

Какая СУБД? Если поддерживает хранимые процедуры, то это нужно делать там.
Если не поддерживает, то все равно рекомендуется анализировать код ошибки - если таблица не удалилась не потому, что ее нет, а потому что было прервано соединение с сервером, то продолжать выполнение не стоит.


 
Reindeer Moss Eater ©   (2004-06-07 17:27) [8]

Digitman ©, у меня 24 строки кода. Предлагаешь каждую заключать в отдельный блок трай-эксептов? :-/

С тех пор как изобрели структурное программирование уже не надо каждую строчку заключать в отдельный блок try except.


 
Anatoly Podgoretsky ©   (2004-06-07 17:27) [9]

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


 
AGGRESSOR ©   (2004-06-07 17:29) [10]

Sandman25 ©, ты абсолютно прав. Ладно, хотел сделать побыстрее... не буду. Лучше потрачу лишних полдня, но все зато будет работать как надо. Спасибо!


 
AGGRESSOR ©   (2004-06-07 17:33) [11]

Reindeer Moss Eater ©, вот человек дал пример:
try
.. строка N
except
end;
.. строка N + 1


Это кривое, но решение. Если знаешь как заключить 25 строчек в ОДИН блок трай-эксепт и при этом удовлетворить условию задачи- напиши пожалуйста.


 
Anatoly Podgoretsky ©   (2004-06-07 17:38) [12]

AGGRESSOR ©   (07.06.04 17:33) [11]
См. Digitman ©   (07.06.04 17:14) [4] последнея строка, но готовься к суровым испытаниям.


 
AGGRESSOR ©   (2004-06-07 17:42) [13]

Anatoly Podgoretsky ©, я понял- иду писать трай-эксепты :)


 
Anatoly Podgoretsky ©   (2004-06-07 17:44) [14]

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


 
icWasya ©   (2004-06-07 18:12) [15]


procedure TryRunSQL(Q:TQuery);
begin
 try
   Q.ExecSQL;
 except
  on E:Exception do begin
    Log("Except "+E.Message+" "+on "+Q.Name);
  end;
 end;
end;

  TryRunSQL(Query1);
  TryRunSQL(Query2);
  TryRunSQL(Query3);
  TryRunSQL(Query4);
  .........
  TryRunSQL(Query21);
  TryRunSQL(Query22);
  TryRunSQL(Query23);
  TryRunSQL(Query24);



 
Mim1 ©   (2004-06-07 18:50) [16]

[15] icWasya ©   (07.06.04 18:12)

Цикл напрашивается.

-
По вопросу. Может проверять есть ли таблица перед попыткой ее уничтожения, а не анализировать результат? Избегать появления эксепшена, а не обрабатывать его.



Страницы: 1 вся ветка

Текущий архив: 2004.06.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.032 c
3-1085676104
JurMax
2004-05-27 20:41
2004.06.20
Компоненты для чтения DXF формата


14-1085566482
Ajax
2004-05-26 14:14
2004.06.20
Регистрация в РосНИИРОС


1-1086451515
Pavel
2004-06-05 20:05
2004.06.20
Rxlib


1-1086448916
jack128
2004-06-05 19:21
2004.06.20
Линия, преследующая курсор


4-1084778473
Dmitrij_K
2004-05-17 11:21
2004.06.20
значки в listview





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский