ere*_*eOn 47 c++ exception throw
通过阅读本节,我发现了一种"技术",作者称之为"异常调度程序",允许某人将所有异常处理分组到一个方便的函数中:
void handleException()
{
try {
throw; // ?!
}
catch (MyException& e) {
//...code to handle MyException...
}
catch (YourException& e) {
//...code to handle YourException...
}
}
void f()
{
try {
//...something that might throw...
}
catch (...) {
handleException();
}
}
Run Code Online (Sandbox Code Playgroud)
困扰我的是单一throw;
陈述:如果你考虑给定的例子然后肯定,它显然是做什么的:它重新抛出首先陷入的异常f()
并再次处理它.
但是,如果我handleException()
直接调用它,而不是从一个catch()
条款中做到这一点怎么办?有没有指定的行为?
此外,对于奖励积分,throw
你知道的还有其他"怪异"(可能不是好词)的使用吗?
谢谢.
Ala*_*kes 47
如果你throw;
自己做了一个,并且没有重新抛出的当前例外,那么程序会突然结束.(更具体地说,terminate()
被称为.)
注意扔; 是重新抛出当前异常的唯一安全方法 - 它不等同于
catch (exception const & e) { throw e; }
dal*_*lle 38
是的,它指定了行为,它会调用terminate;
15.1,第8段:如果当前没有处理异常,则执行不带操作数的throw表达式调用terminate()(15.5.1).
归档时间: |
|
查看次数: |
11177 次 |
最近记录: |