Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Забыл сказать. При всей логичности ctor(){ throw ...} всё же... 20.05.08 04:51 Число просмотров: 1600
Автор: void <Grebnev Valery> Статус: Elderman Отредактировано 20.05.08 05:01 Количество правок: 1
|
> Разумеется, если в программе вообще используются > исключения. Отдельная функция инициализации удобна, если > хочется в ней какую-то виртуальную функцию дернуть, в > остальном же - дело вкуса, плюсы и минусы использования > исключений вроде бы достаточно очевидны. И выбор между > исключением в конструкторе и отдельным init с возвращаемым > значением ничем не отличается от аналогичного выбора для > любой другой функции.
Забыл сказать. При всей логичности ctor(){ throw ...} всё же отталкивает факическое отсутствие стандарта поведения объекта, и зависимость этого поведения от компилятора и выбранной модели обработки исключений. Достаточно сказать, что VC++ 6.0 и VC++8.0 по разному обрабатывают экзепшены. Совсем очаровательная Microsoft фича, когда для частично инициализированного объекта с ctor(){ throw ...} память для MyExceptional * inst = new MyExceptional() просто не выделяется, или выделяется в зависимости от параментов компиляции (/EHsc или /EHa) - добивает.
Вероятно поэтому, изобретатели С++ языка решили всё же отказаться от использования exception в коде вообще в недетских проектах (http://www.research.att.com/~bs/JSF-AV-rules.pdf). Страуструп там один из соавторов.
|
|
|