Как поймать исключение в списке инициализации? [дубликат]

7
задан skydoor 14 March 2010 в 02:44
поделиться

4 ответа

Я думаю, что синтаксис похож на этот (хотя лучше улавливать такие вещи в вызывающем. И что вы собираетесь делать, когда поймаете это?)

Bar::Bar()
try
  : Foo(1)
{
}
catch( const SomeException &e )
{
}
10
ответ дан 6 December 2019 в 11:48
поделиться

В C ++ есть механизм для этого, но он используется редко. Это функциональный блок try:

Bar::Bar()
try
  : Foo(1)
{
}
catch( Something )
{
}

См. Этот классический gotw , в котором объясняется, почему его следует использовать только для преобразования исключений (например, тип исключения FooException становится BarException).

6
ответ дан 6 December 2019 в 11:48
поделиться

Я считаю, что это должно быть уловлено процедурой, создающей объект.

1
ответ дан 6 December 2019 в 11:48
поделиться

Рассмотрите возможность замены проблемного экземпляра на boost :: optional . Затем вы можете отложить его инициализацию в теле конструктора.

0
ответ дан 6 December 2019 в 11:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: