Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > повторный вызов исключения из блока catch


Автор: Hassel 1.8.2011, 19:26
Вопрос: в приведенном фрагменте есть какие-нибудь проблемы, или все корректно?
Задача - перехватить исключение, производное от exception, предпринять некоторые действия и сгенерировать другое исключение (возможно того же типа, но с другим значением).
Код

#include <iostream>

class database_failure : public std::exception
{
  std::string description;

  public:
    database_failure( std::string dscr ) : description( dscr ) {};
   ~database_failure() throw() {};
    virtual const char* what() const throw() { return description.c_str(); };
};

class B
{
 public:
  void print() throw( database_failure ) { throw( database_failure("exeption in B::print()") );  }
};



int main(void)
{
  B b;

  try
  {
    b.print();
  }
  catch( std::exception &e )
  {
    //"некоторые действия"
    throw( database_failure("exeption in main") );
  }

  return 0;
}


Вот этот пример работает, а в реальном коде "повторное" исключение не влияет на ход выполнения программы, при том, что явно я его нигде не перехватываю.

Автор: spyswamp 2.8.2011, 11:28
Hassel, так ты и показывай реальный код, а не свой helloworld. Школа Телепатии и Магии не одобряет этот пост.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)