Kir*_*ran 2 c++ exception scope-resolution
我有以下代码,其中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;
}
Run Code Online (Sandbox Code Playgroud)
捕获后是否可用?
不会.它会在声明它的块的末尾被销毁,就像任何其他局部变量一样.
try {
dbhandler<recType> dbh(("dbName"),("table"));
} // dbh.~dbhandler<recType>() is called to destroy dbh
Run Code Online (Sandbox Code Playgroud)
什么是最好的设计选择?
dbh在try块外部声明或将使用它的所有代码移动到try块中.哪一个最有意义取决于您的具体用例.
在某种程度上相关的说明,如果您catch (...),您应该重新抛出异常或终止应用程序:您不知道正在处理什么异常,并且通常您不知道继续执行是否安全.
| 归档时间: |
|
| 查看次数: |
447 次 |
| 最近记录: |