Вниз
Скачать: 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.036 c
1-1081879730
HPR
2004-04-13 22:08
2004.05.02
Запись в реестр динамического массива


9-1069199412
Dmitrich
2003-11-19 02:50
2004.05.02
DelphiX- Спрайты


1-1082097644
Ivolg
2004-04-16 10:40
2004.05.02
FindDialog


4-1079038077
ZedeS
2004-03-11 23:47
2004.05.02
отследить запуск другой программы


1-1082086926
cvg
2004-04-16 07:42
2004.05.02
Какие есть цвета?




   Наверх