Форум: "Начинающим";
Текущий архив: 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