• 締切済み

C++のtryとcatch

C++で、例外処理としてtryがあるのですが、どういった使い方をするのでしょうか? それと、catchも使い方がわかりません。 どなたか教えてください。 よろしくお願いします。

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

「例外」自体が分からない、ということでしょうか、それとも「例外」はなんとなく 理解しているが、try と catch が分からないんでしょうか。 例外とは、その名の通り、こんなはずではなかった、ということを表すものです。 つまり、予期せず起こるものです。 でも、例外が起きたときの対処は、それぞれに対して1対1で対処法があると いうよりは、細かいことは気にせずまとめて処理できることの方が多いです。 「こんなはずではなかった!」というときには、例外を *投げます* (throw)。 投げられた例外は、例外の後始末をする誰かが *受け取ります* (catch) 。 例外を受け取るために、範囲が指定できます。例外が起きるかどうか試してみる という意味で try というブロックがあります。 例外は概念で、例外の実体にはクラスを指定できます。 下に示すプログラムは、ふたつ数字を入力して割り算をした結果を表示する ものです。0では割れませんから、そのときは例外としています。雰囲気が 分かるでしょうか? #include <iostream.h> class ExceptionDivideByZero { private:   int x_, y_; public:   ExceptionDivideByZero(int x, int y) : x_(x), y_(y) {}   void printMessage(); }; void ExceptionDivideByZero::printMessage() {   cout << "Divide By Zero. " << x_ << " / " << y_ << endl; } int divide_number(int a, int b) {   if (b == 0) {     throw ExceptionDivideByZero(a, b);   }   return a / b; } int main() {   int a, b, c;   try {     cerr << "a: "; cin >> a;     cerr << "b: "; cin >> b;     c = divide_number(a, b);     cout << "a / b = " << c << endl;   } catch (ExceptionDivideByZero ex) {     ex.printMessage();   }   return 0; } ★実行結果 $ prog a: 4 b: 2 a / b = 2 $ prog a: 5 b: 0 Divide By Zero. 5 / 0 # 「伝わるかな~」という意味で自信無しにしておきます

関連するQ&A