Удаление Exception классов
От: GhostCoders Россия  
Дата: 26.05.10 16:51
Оценка:
Здраствуйте!

Есть базовый класс для исключений у которого есть виртуальный метод возвращающий
описание ошибки:

class CException
{
public:
   virtual ~CException()
   {
       // Некоторая очистка
   }

   virtual std::string GetDescription()
   {
       return std::string("base exception description");
   }
};

class CDerivedException : public CException
{
public:
   virtual ~CDerivedException()
   {
       // Некоторая очистка
   }

   virtual std::string GetDescription()
   {
       return std::string("derived exception description");
   }
};


в коде я его использую так:

if (error)
{
   throw new CDerivedException();
}


перехват исключений

catch(CException* ex)
{
   printf("%s\n",ex->GetDescription()); // Вызов виртуальной функции
   ...
   // надо ли исключение удалять?
   delete ex;
}


Так надо ли удалять исключение после обработки?

И еще. Могу ли я воспользоваться не указателем на исключение а объектом-исключением?
Не сломает ли это механизм виртуальных методов?

Спасибо.
Третий Рим должен пасть!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.