次のコードは、Visual Studio 2010 で完全に問題なく例外をスローします。
#include <iostream>
#include <cmath>
using namespace std;
int perfectSquare(double sq, int nu);
int main()
{
double num;
double squareRoot;
int perfectSq;
cout << "Enter the a number: ";
cin >> num;
try
{
squareRoot = sqrt(num);
perfectSq = perfectSquare(squareRoot, num);
cout << "The square root is: " << perfectSq << endl;
}
catch(char * exceptionString)
{
cout << exceptionString;
}
cout << "BYE." << endl;
// system("PAUSE");
return 0;
}
int perfectSquare(double sq, int nu)
{
int temp = sq;
if (sq != temp) //clever test; if square root IS NOT an INT
{
throw "not a perfect square.\n";
}
else
{
return sq;
}
}
ただし、Xcode では再開せず、デバッガーでブレークポイントにヒットし続けます。たとえば、33 (完全な正方形ではない) を入力すると、次のエラーが表示されます: libc++abi.dylib: terminate called throwing an exception (lldb)
次の行を「スロー」する必要があります。「完全な正方形ではありません。」プログラムは終了するはずです(VS 2010のように)。デバッグせずにプログラムを最後まで実行したいだけなので、Xcode で例外ブレークポイントを有効にしたくありません。
ありがとうございます。