C++异常重抛出

如果我们编写了一个函数,函数内部可能会出现异常,但是我们不想在这个函数内处理,而是想要通知调用者,那么C++允许它重抛出这个异常。语法如下:

try {
    //Execute some code        
} catch (Exception& e) {
    //Peform some operations before exits
    throw;
}

语句throw重新抛出了异常。

看一个实际的例子:

#include <iostream>
#include <stdexcept>

using namespace std;

int f(){
    try{
        throw runtime_error("Exception in f");
    } catch(exception& e){
        cout << "Exception caught in f" << endl;
        cout << e.what() << endl;
        throw;
    }
}
int main()
{
    try{
        f();
    } catch(exception& e){
        cout << "Exception caught in main" << endl;
        cout << e.what() << endl;
    }
    return 0;
}

运行结果:

原文地址:https://www.cnblogs.com/bwjblogs/p/12826726.html