0

Snow Leapard ですべての例外に対して catch ブロックを使用して C++ プログラムを実行しています。プログラムは次のとおりです。

#include <iostream>

using namespace std;

const int DefaultSize = 10;

int main()
{
   int top = 90;
   int bottom = 0;

   try
   {
      cout << "top / 2 = " << (top/ 2) << endl;

      cout << "top divided by bottom = ";
      cout << (top / bottom) << endl;

      cout << "top / 3 = " << (top/ 3) << endl;
   }
   catch(...)
   {
      cout << "something has gone wrong!" << endl;
   }

   cout << "Done." << endl;
   return 0;
}

g++ バージョン i686-apple-darwin10-g++-4.2.1 を使用してプログラムをコンパイルしています: g++ -o test test.cpp。catch ブロックが実行されていません。出力は次のとおりです。「top / 2 = 45 浮動小数点例外」。エラー メッセージや Done は出力されません。出力は、try-catch ブロックが存在しない場合とまったく同じです。キャッチが実行されない理由を教えてもらえますか? ユーザー定義の例外が機能するようになりました。

4

1 に答える 1

0

C++ にはデフォルトのゼロ除算エラーはありません。したがって、下の値が 0 かどうかを確認する必要があります。

try{
    if(bottom==0)
         throw bottom; //Or any integer
   }

catch(int x)
{
     cout<<"Something has gone wrong";
}
于 2013-04-13T19:50:25.913 に答える