![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подавление всех Exception кроме определенного
Человек © (2011-10-23 11:36:00)Есть код вида:
try
Func();
except on E:Exception do
if E is EMyException then
raise EMyException.Create(E.Message);
end;
Смысл: нужно подавить все возможные exception, которые могут быть сгенерированы в функции Func(), кроме EMyException. Синтаксис Delphi позволяет сделать наоборот, т.е. подавить конкретный тип, а остальные пропустить.
Пробовал делать просто
except on E:Exception do
if E is EMyException then
raise E;
end;
Но такой код выдает AV.
Есть ли более красивое решение, чем то что я написал (заново создавать и генерировать Exception нужного типа, копируя все параметры старого)?
Человек (2011-10-23 14:03:00) [1]Всем спасибо, помогло.
sniknik (2011-10-23 13:14:00) [2]> Есть ли более красивое решение
есть. убрать "подавление" вообще. если прогу будут поддерживать, а не для "корзины" пишешь.
вот так к примеру, чтобы только "My" показывались пользователю
except
on E: EMyException Exception do raise;
on E: Exception do SaveToLog(E);
end;
Anatoly Podgoretsky (2011-10-23 12:50:00) [3]> Человек (23.10.2011 11:36:00) [0]
On EMyException do ....
_Юрий (2011-10-23 11:43:00) [4]except on E:Exception do
if E is EMyException then
raise;