通读该部分,我发现了一种作者称之为“异常调度器”的“技术”,它允许某人将他所有的异常处理分组到一个方便的函数中:
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();
}
}
困扰我的是一个throw;
声明:如果你考虑给定的例子,那么肯定,它的作用是显而易见的:它重新抛出首先捕获的异常f()
并再次处理它。
但是,如果我handleException()
自己直接调用,而不是从catch()
子句中调用呢?是否有任何指定的行为?
此外,对于奖励积分,还有其他throw
您知道的“奇怪”(可能不是好词)用法吗?
谢谢你。