Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Вниз

перехватить конкретный 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 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.044 c
2-1212493835
Igor
2008-06-03 15:50
2008.06.29
Treeview


2-1212564137
Trei
2008-06-04 11:22
2008.06.29
Ссылка


11-1190533216
MTsv DN
2007-09-23 11:40
2008.06.29
KOL v.2.80 (UNICODE)


15-1211177834
Mozart
2008-05-19 10:17
2008.06.29
Active Directory?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский