私はエラー処理をいじっており、例外処理を理解するための短いプログラムを作成しました。ユーザーが数値を入力し、プログラムがcinによってスローされた例外をキャッチする次のプログラムを作成しました。
#include <iostream>
int main()
{
std::cin.exceptions(std::cin.failbit);
int ReturnCode = 0;
try{
float Number;
std::cout << "Number: \n";
std::cin >> Number;
std::cout << Number << "\n";
}
catch(...){
std::cerr << "Input error \n";
std::cin.clear();
char BadInput[5];
std::cin >> BadInput;
ReturnCode = 1;
};
char StopChar;
std::cout << "Press a key and enter: \n";
std::cin >> StopChar;
return ReturnCode;
}
Xcodeでコードをコンパイルしましたが、文字列が指定されても例外はスローされませんでした。ただし、terminalとコマンドを使用してコンパイルするとg++ main.cpp -Wall -Wextra -o program
、すべて正常に機能しました。何が起こっているのですか、そしてXcodeでコンパイルすることとターミナルを使用することの違いは何ですか?どんな助けでも大歓迎です!