次のコードでは、dbhコンストラクターが例外をスローする可能性があります。私が持っている質問は、dbhがtryブロック内で宣言されているということです。キャッチ後に利用可能になりますか?はいの場合、スコープの解像度が{}と異なる他の例外はありますか?そうでない場合、最良の設計代替案は何ですか?
status func(const char* field, char** value)
{
try {
dbhandler<recType> dbh(("dbName"),("table"));
}
catch (std::runtime_error &e) {
LOG_ERR << e.what() << endl ;
return false;
}
catch (...) {
LOG_ERR << "Unknown exception" << endl ;
return false;
}
rc = dbh.start("key",field, val);
return rc;
}