pap*_*jam 15 c++ exception try-catch
我想在异常处理程序中执行的代码本身可能会抛出异常.
以下结构是否合法C++?如果是的话,有任何缺点吗?
try
{
// ...
}
catch (const E&)
{
try
{
// ...
}
catch (const F&)
{
}
}
Run Code Online (Sandbox Code Playgroud)
Die*_*ühl 22
实际上,甚至有一种使用嵌套try/catch-blocks的有趣技术:假设你有多个函数需要有效的相同异常处理.特别是在包装另一个界面时,这是常见的情况 在这种情况下,可以捕获所有异常,从异常处理程序调用函数,并在此函数中重新抛出异常以实现实际的异常处理:
void fancy_handler() {
try {
throw; // assumes that fancy_handler() is called from catch-clause
} catch (std::runtime_error const& rt) {
std::cout << "runtime-error: " << ex.what() << "\n";
} catch (std::exception const& ex) {
std::cout << "excption: " << ex.what() << "\n";
} catch (...) {
std::cout << "unknown exception\n";
}
}
void foo() { try { do_foo(); } catch (...) { fancy_handler(); } }
void bar() { try { do_bar(); } catch (...) { fancy_handler(); } }
Run Code Online (Sandbox Code Playgroud)
我只是喜欢避免重复[非平凡]代码!
| 归档时间: |
|
| 查看次数: |
8354 次 |
| 最近记录: |