Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подавление всех 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо