Здраствуйте!
Есть базовый класс для исключений у которого есть виртуальный метод возвращающий
описание ошибки:
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;
}
Так надо ли удалять исключение после обработки?
И еще. Могу ли я воспользоваться не указателем на исключение а объектом-исключением?
Не сломает ли это механизм виртуальных методов?
Спасибо.