Re[5]: Re: Зачем надо throw new CMyException
От: sev http://www.demoforge.com
Дата: 12.03.03 15:25
Оценка:
sev>>Ну как что будет, полетит std::bad_alloc, вестимо
sev>>Только чем это плохо?
> Например тем, что ловить ты будешь СExceptionPtr (тем более, что в
> заголовочном файле у тебя уже есть COutOfMemoryExeption).

COutOfMemoryExeption был дан скорее для примера, не нужно
рассматривать его как замену std::bad_alloc, он для этого не задумывался

> А выкинется std::bad_alloc (особенно в случае COutOfMemoryExeption), которая

> останется неперехваченной. Или я чего-то не понял?

std::bad_alloc останется неперехваченным тем кодом, который ожидал
увидеть потомка CException. Что вполне логично. Разумеется, что где-то
в программе должен быть и обработчик std::bad_alloc А также всех прочих,
порождённых от std::exception. Т.е. я не претендую на замену std::exception
своими исключениями. Мои исключения _логические_, в то время как
std::bad_alloc сугубо системное.

Как вариант, все не-CException могут ловиться через catch(...) и транслироваться
в CException-derived исключения. Ссыка на оригинальный способ это сделать
здесь уже пробегала.

>>> Проще надо ИМХО, конечно.

sev>>Предлагайте варианты...
> Ну мне такая штука была нужна, просто для записи более подробной отладочной
> информации о том, что же сбойнуло. Ну так каждое исключение на своем уровне
> просто писало в лог, то что знало и все — дальше новое throw, если нужно, и
> перехват в верху . Мне было вполне достаточно. А если речь идет о клиенте, а
> не о серваке, то юзеру вполне достаточно сказать "облом тебе", а не пугать
> кучей непонятной информации. Так что получалось дешего и сердито. Просто для
> того, чтобы что-то предлагать надо бы выснянить, я для чего конкретно такой
> огород городим.

Тут могут быть разные идеи, но я исходил из того, что _мне нужно_ иметь
список вложенных исключений a-la .NET. Я не вижу достойной альтернативы
сделать это без использования динамической памяти.

С уважением,
Евгений Суходолин
http://www.demoforge.com/
Posted via RSDN NNTP Server 1.4.6 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.