2

私は C++ を 2 か月間勉強していますが、C++ の try-catch ブロックを理解するのに問題があります。私は本を​​使用しています:プログラミングの原則とC ++を使用した実践、これが私の本の内容です:

例外の基本的な考え方は、関数 find が処理できないエラーである場合、正常に返らず、代わりに何が問題であったかを示す例外をスローするというものです。直接的または間接的な呼び出し元は、例外をキャッチできます。つまり、呼び出されたコードがthrow を使用した場合の処理​​を指定できます。

「任意の直接的または間接的な呼び出し元が例外をキャッチできる」とはどういう意味ですか? 作成者とは、関数またはキャッチ関数の呼び出し元を意味しますか? 私はこれについて混乱しています。簡単な方法で説明していただけますか?

4

1 に答える 1

4

間接呼び出しの例: ここでは、呼び出された関数で例外が発生します。ただし、try キャッチは、呼び出された関数ではなく、呼び出し元の関数に配置されます。

#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 に答える