0

我正在运行一个 c++ 程序,其中包含 Snow Leapard 下所有异常的 catch 块。该程序是:

#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 浮点异常”。没有错误消息或完成打印。输出与不存在 try-catch 块时完全相同。有人能告诉我为什么 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 回答