Вопрос: в приведенном фрагменте есть какие-нибудь проблемы, или все корректно? Задача - перехватить исключение, производное от 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; }
|
Вот этот пример работает, а в реальном коде "повторное" исключение не влияет на ход выполнения программы, при том, что явно я его нигде не перехватываю. |