次のプログラムは常に "Error:double 10.2"を出力します。C++での例外処理: "throw(int)"使用時にdoubleをスローする
なぜか分かりません。 私によれば、fun1()がintだけをスローすることができる場合、プログラムは (1)をクラッシュするか(2)を破棄するか、doubleをintに変更してスローします。 これは、出力が "Error:int 10"であることを意味します。しかし、これは当てはまりません。誰でも説明できますか?
void fun1() throw (int)
{
cout<<"3";
throw 10.2;
cout<<"4";
}
int main()
{
try { fun1(); }
catch(int i) { cout<<"Error:int" <<i <<endl;}
catch(double i) { cout << "Error:double" << i << endl; }
cout << endl;
return 0;
}
'throw'関数の宣言を使用しないでください。これは駄目な機能であり、廃止予定です。 – piokuc
MSVCを使用していますか?それは実際には例外仕様をサポートしませんでした。 – Fanael
これは 'int main()'でなければなりません。 –