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

перехватить конкретный exception   Найти похожие ветки 

← →
muk   (2008-06-03 10:22) [0]

при работе с twebbrowser в определенной ситуации возникает ексепшн "неизвестный аргумент" (EOleException),
ситуация когда возникает ошибка извесна, к сожалению исправлению не подлежит, как обработать (перехватить) именно эту ошибку в программе?


← →
muk   (2008-06-03 10:23) [1]

я имею виду чтоб она не вылазила?


← →
Thrasher ©   (2008-06-03 10:40) [2]

Используй конструкцию:

try
// Тут код который может вызвать исключение
except
// Тут код который выполняется если возникло исключение. (если ничего не надо выполнять, то ничего не пиши)
end;


← →
muk   (2008-06-03 10:51) [3]

да, спасибо, но это будет перехватывать все ошибки EOleException, или только эту?


← →
Olegz77 ©   (2008-06-03 11:01) [4]

Этот код будет перехватывать ВСЕ ошибки, которые могут возникнуть в этом блоке кода - не только EOleException. Если надо фильтровать, то так:

try
// код, который может вызвать исключение
except
 if ExceptObject is EOleException then
   // исключение EOleException
 else
   raise; // если нет, восстанавливаем объект исключения
end;


← →
ZENsan ©   (2008-06-03 11:08) [5]


 try

 except
   on E:EOverflow do
     Writeln("overflow");
   on E:EDivByZero do
     Writeln("divbyzero");
   else
     WriteLn("Other exception");
 end;


← →
Palladin ©   (2008-06-03 11:09) [6]


> Olegz77 ©   (03.06.08 11:01) [4]

для тебя наверное будет это откровением, но есть такая вещь, в блоке try except как, ON, подробности в справке, как правильно нужно фильтровать, а так же смотри ремарку в справке про ExceptObject...


← →
Olegz77 ©   (2008-06-03 11:10) [7]

Для фильтрования определенной EOleException ошибки, возможно, подойдет свойство ErrorCode класса EOleException. Что-то вроде этого:

try
 // код, который может вызвать исключение
except
 if ExceptObject is EOleException then
 begin
   if EOleException(ExceptObject).ErrorCode = SOME_ERROR_CODE then
   begin
     // ничего не делаем
   end
   else
     raise; // если не "наша" ошибка EOleException - восстанавливаем объект исключения
 end
 else
   raise;
end;

Остается экспериментальным путем определить значение SOME_ERROR_CODE, когда ошибка - "неизвестный аргумент"


← →
Olegz77 ©   (2008-06-03 11:11) [8]

> Palladin
не будет


← →
Olegz77 ©   (2008-06-03 11:22) [9]

Не сообразил сразу как при наличии ON блоков перегенерировать исключения. Так что-ли получается:

try
//...
except
 on E: EOleException do
 begin
   if E.ErrorCode <> SOME_ERROR_CODE then
     raise;
 end;
else
 raise;
end;

т.е. определенную EOleException фильтруем, остальное не трогаем


← →
sniknik ©   (2008-06-03 11:25) [10]

> зачем тогда извращения, с большим количеством кода, и путаницей? специально для начинающих?
[7]  в нормальном виде
try
 // код, который может вызвать исключение
except
 on E: Exception do
  if E.ErrorCode <> SOME_ERROR_CODE then
    raise; // если не "наша" ошибка EOleException - восстанавливаем объект  
end;

разве не проще, для понимания и вообще?


← →
sniknik ©   (2008-06-03 11:30) [11]

о, блин, сам ошибся
вместо on E: Exception do  надо было on E: EOleException do


← →
muk   (2008-06-03 13:37) [12]

так, всем спасибо, а где ети коды исключений посмотреть?


← →
muk   (2008-06-03 19:28) [13]

Удалено модератором



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

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



Память: 0.47 MB
Время: 0.013 c
15-1210793838
No_Dead
2008-05-14 23:37
2008.06.29
Перекрестные ссылки на сайте


11-1188917890
Vladimir Kladov
2007-09-04 18:58
2008.06.29
FastString для быстрой работы со строками Ansi


15-1211026442
Knight
2008-05-17 16:14
2008.06.29
Можно ли поставить IE7 на Win2k?


2-1212150966
Mozgan
2008-05-30 16:36
2008.06.29
Memo и SMTP


15-1211185363
barakuda
2008-05-19 12:22
2008.06.29
Нужна процедура отправки письма за деньги




   Наверх