class Exception;
class NotInitException: public Exception;
class DeadlockException: public Exception;
class BusyException: public Exception;
try
{
switch (/* какая-то функция возвращающая ошибку */)
{
case ok: return;
case not_init: throw NotInitException;
case deadlock: throw DeadlockException;
case busy: throw BusyException;
}
// Какой-то ещё код, который может выбрасывать другие исключения - не из моей "иерархии исключений".
// ...
}
catch (Exception& e)
{
throw e;
}
catch (...)
{
throw Exception;
}
Т.е. "свои" исключения нужно пробрасывать дальше, но: оператор throw e; меняет тип исключения - дальше все мои исключения "летят" под типом Exception (я у них "спрашиваю" внутреннюю информаацию).
Что ж вместо одного catch (Exception& e) писать кэтчи на каждый тип моего исключения?
catch (...)
{
throw Exception;
}[code]
Т.е. "свои" исключения нужно пробрасывать дальше, но: оператор throw e; меняет тип исключения - дальше все мои исключения "летят" под типом Exception (я у них "спрашиваю" внутреннюю информаацию).
Что ж вместо одного catch (Exception& e) писать кэтчи на каждый тип моего исключения?