Skip to content

异常处理

异常处理的基本形式如下:

try {
    // 可能会抛出异常的代码
} catch (ExceptionType1 e1) {
    // 处理ExceptionType1类型的异常
} catch(ExceptionType2 e2){
    // 处理ExceptionType2类型的异常
}
//剩余代码

它的处理流程如下:

  • 如果没有抛出异常:catch块的语句不会被执行,程序继续执行剩余代码。

  • 如果抛出了异常:根据不同的异常找到对应的catch块,一直执行到throw语句,之后的语句不会被执行。

一个最简单的除0异常如下:

double SafeDivide(double num1, double num2)
{
    if(num2 == 0){
        throw invalid_argument("Divide by zero");
    }
    return num1 / num2;
}

int main()
{
    try{
        cout<<SafeDivide(5, 2)<<endl;
        cout<<SafeDivide(10,0)<<endl;
    }catch(const invalid_argument& e){
        cout<<"Caught exception:"<<e.what()<<endl;
    }
}

e.what()函数返回一个const char *的字符串。