Re[2]: Серия COM-вызовов
От: Ocelot  
Дата: 14.04.03 12:29
Оценка:
Здравствуйте, Ведмедь, Вы писали:

В>Здравствуйте, disop, Вы писали:


В>А почему не так?



В>try

В>{
В> HRESULT hr
В> Check( COMOBJECT1.Initialize() );
В> Check( COMOBJECT2.Initialize() );
В>...

В>} catch( HRESULT hr )

В>{
В> throw hr;
В>}
В>[/ccode]

Да, с исключениями правильно и красиво — если только можно их использовать.
Доводилось писать COM-объекты, которые должен были быть предельно маленькими
по размеру. Пришлось отказаться от стандартного рантайма, а вместе с ним и от
исключений. Использовал конструкцию типа

do
{
hRes = COMOBJECT1.Initialize();
if ( FAILED(hRes) )
break;
hRes = COMOBJECT2.Initialize();
if ( FAILED(hRes) )
break;
}
while(false);

, и даже потом сделал макро-обертки, т.е.
#idef USE_RUNTIME
#define com_try try
#else
#define com_try do
#endif

Т.е. код потом можно было компилить и с исключениями, и без.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.