以下代码在 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 中启用异常断点,因为我只想让程序在不调试的情况下一直运行到最后。
谢谢大家。