通过这部分内容的阅读,我发现了一种被作者称为“异常调度程序”的技术,它允许某人将所有的异常处理集中在一个方便的函数中:
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
的任何其他“奇怪”(可能不是恰当的词)用法?
谢谢。
throw;
的意思是“重新抛出当前异常”。 - Fred Larson