Текущий архив: 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