try ブロック(C++ のみ)

try ブロック を使用して、 即座に処理したい例外をスローする可能性のある、プログラムのエリアを指示します。 関数 try ブロック を使用して、 関数の本体全部で例外を検出したいことを指示します。

構文図を読む構文図をスキップする
try ブロックの構文 

                          .---------.   
                          V         |   
>>-try--{--statements--}----handler-+--------------------------><

構文図を読む構文図をスキップする
 関数 try ブロックの構文 

                                                       .---------.   
                                                       V         |   
>>-try--+----------------------------+--function_body----handler-+-><
        '-:--member_initializer_list-'                               

以下のコードは、メンバー初期化指定子、関数 try ブロック、および try ブロックを持つ関数 try ブロックの例です。
#include <iostream>
using namespace std;

class E {
   public:
      const char* error;
      E(const char* arg) : error(arg) { }
};

class A {
   public:
      int i;

      // A function try block with a member
      // initializer
      A() try : i(0) {
         throw E("Exception thrown in A()");
      }
      catch (E& e) {
         cout << e.error << endl;
      }
};

// A function try block
void f() try {
   throw E("Exception thrown in f()");
}
catch (E& e) {
   cout << e.error << endl;
}

void g() {
   throw E("Exception thrown in g()");
}

int main() {
   f();

   // A try block
   try {
      g();
   }
   catch (E& e) {
      cout << e.error << endl;
   }
   try {
      A x;
   }
   catch(...) { }
}
上記の例の出力は、以下のとおりです
Exception thrown in f()
Exception thrown in g()
Exception thrown in A()
クラス A のコンストラクターには、 メンバー初期化指定子を持つ関数 try ブロックがあります。 関数 f() には、関数 try ブロックがあります。 main() 関数は、try ブロックを含んでいます。