理解try-block

时间:2015-01-25 16:46:27

标签: c++ exception error-handling try-catch error-checking

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

  
    

异常的基本思想是,如果函数find是一个无法处理的错误,它就不会正常返回,而是抛出一个指示出错的异常。任何直接或间接调用者都可以捕获异常,也就是说,如果被调用的代码使用 throw ,则指定要执行的操作。

  

“任何直接或间接调用者可以使用异常意味着什么?作者是指函数的调用者还是函数?”。我对此感到困惑,你能以简单的方式向我展示它吗?

1 个答案:

答案 0 :(得分: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;
}

上述程序仅用于说明,而不是用于编写有用程序时可能遇到的任何实际示例。