Вниз
Скачать: CL | DM;

Игнорирование исключений   Найти похожие ветки 

 
Ломброзо ©   (2004-04-13 00:20) [0]

Пусть есть такой код:
var i: integer;
   v_i: variant;
...
// здесь:
 try
   v_i = NULL;
   i := v_i;
 except
   on E:EVariantError do
 end;

 v_i := 100;
 i := v_i;

Код просто для примера. В первом блоке, естественно, вылетает EVariantError. Мне это место надо просто игнорировать. С включенным интегрированным отладчиком и галкой "Stop on Delphi exceptions"  "отлаживать" становится просто утомительно, отладчик упорно залезает в этот блок и там застревает. Мне надо просто игнорировать это исключение именно в этом самом месте (и не игнорировать в отстальных), т.е. заносить это класс исключений в список игнорируемых Language Exceptions глобально - нельзя. Нету ли какого-нибудь хитрого флажка отладчику игнорировать именно это место?


 
Германн ©   (2004-04-13 02:37) [1]

Abort поможет той девушке, которую ты завлек и обманул. Точнее он поможет тебе, а вот у нее могут возникнуть в дальнейшем проблемы. (((


 
NAlexey ©   (2004-04-13 08:25) [2]

Там же где включаешь галку  "Stop on Delphi exceptions" есть список игнорируемых ошибок. Добавь туда свою.


 
Ломброзо ©   (2004-04-13 18:22) [3]

>Германн ©   (13.04.04 02:37) [1]
Я не смог постигнуть всю глубину Вашей мысли. Попробуйте ещё раз.

>NAlexey ©   (13.04.04 08:25) [2]
>т.е. заносить это класс исключений в список игнорируемых >Language Exceptions глобально - нельзя.


 
Andryk ©   (2004-04-13 18:46) [4]

А если попробовать обложит возможное место ошибки проверками и условными операторами? Чтобы этой ошибки и не возникало


 
Гаврила   (2004-04-13 18:59) [5]

Присоединяюсь к предыдущему оратору
Тем более если это исключение вылетает постоянно...


 
Ломброзо ©   (2004-04-13 19:16) [6]

Исключение вылетает с невысокой вероятностью.
Ладно, пример такой. Допустим, некий DataPump делает селект из кучи (неск. десятков) РАЗНОРОДНЫХ таблиц одного источника (DBF, Excel, Access) и вставку в таблицу другой, например, MS SQL/Access. Алгоритм проще не придумаешь (псевдокод)
Qr1.First;
while not Qr1.Eof do
begin
 Qr2.Insert;
 for i := 0 to Qr1.Fields.Count - 1 do
 begin
   Qr2.FieldByName(Qr.Fields[i].Name).Value = Qr.Fields[i].Value;
 end;
 Qr2.Post;
 Qr1.Next;
end;
   
По ряду причин типы одноимённых полей в двух таблицах могут не совпадать: строка, деньги, double, float, int. Ес-но, ошибка обрабатывается в except, но раздражает то, что дебаггер всякий раз там запинается.

Ну ладно, нельзя так нельзя.


 
Cobalt ©   (2004-04-13 19:34) [7]

2 Ломброзо ©   (13.04.04 19:16) [6]
Ну, блин...
А присваивать кокнкретным типом (AsInteger/Float/etc), сделав табличку соответствий типов источника-приёмника?



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
3-1081082784
TechnoDreamer
2004-04-04 16:46
2004.05.02
Запись бинарного файла в поле ADOTable


7-1078500222
Александр1
2004-03-05 18:23
2004.05.02
Flash Hard Driver


14-1081635133
Soft
2004-04-11 02:12
2004.05.02
Соционика или типизация человеческой личности.


7-1078825417
WondeRu
2004-03-09 12:43
2004.05.02
MMC и Delphi


8-1074610714
Laumer
2004-01-20 17:58
2004.05.02
Как выключить другие звуки и вывести свой




   Наверх