Главная страница
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.5 MB
Время: 0.028 c
9-1077296031
Electon
2004-02-20 19:53
2004.06.20
как грабить DirectX?


6-1082619213
Анонимщик
2004-04-22 11:33
2004.06.20
TServerSocket, TClientSocket. Синхронный и асинхронный, блокирующ


14-1086246365
AlexG
2004-06-03 11:06
2004.06.20
Как заставить программу работать на другом компьютере?


3-1085659592
dimm22
2004-05-27 16:06
2004.06.20
Подключаюсь к БД Access+Excel с помощью Microsoft.Jet.OLEDB.4.0


1-1086612922
афвуд
2004-06-07 16:55
2004.06.20
А никто не пробовал писать свой "Variant" ?