2

我正在学习 C++ 2 个月,但在理解 C++ 中的 try-catch 块时遇到了一些问题。我正在使用这本书:编程原理和使用 C++ 的实践,这是我的书所说的:

异常的基本思想是,如果一个函数 find 是一个它无法处理的错误,它不会正常返回,相反,它会抛出一个异常,指示出了什么问题。任何直接或间接调用者都可以捕获异常,即指定如果被调用的代码使用throw该怎么办。

“任何直接或间接调用者都可以捕获异常意味着什么?作者是指函数的调用者还是捕获函数?”。我对此感到困惑,您能用简单的方式向我解释一下吗?

4

1 回答 1

4

间接调用示例:此处异常发生在被调用函数中。但是try catch是放在调用函数中的,而不是被调用函数中。

#include <iostream>
#include <exception>

using namespace std;
void divideByZero(){
    int a = 5;

    int b = a / 0;
    throw(b);
}
int main()
{
    try{
        divideByZero();
    }
    catch (exception& e){
        cout<<e.what()<<endl;
    }

    return 0;
}

直接异常的示例:这里的异常直接发生在函数本身中,并在那里自己处理。

#include <iostream>
using namespace std;

int main()
{
    try{
        int a = 5;
        int b = a / 0;
        throw(b);
    }
    catch (exception& e){
        cout<<e.what()<<endl;
    }

    return 0;
}

上述程序仅用于说明,不用于任何实际示例,您在编写有用的程序时可能会遇到这些示例。

于 2015-01-25T16:52:46.663 回答