コンストラクターで例外を処理するためのこのテストコードがあります。関数f()は、ゼロによる例外除算を作成しますが、この例外はキャッチされません。代わりに、カスタム整数をスローすると、例外がキャッチされます。
#include <iostream>
using namespace std;
class A
{
public:
void f(){
int x;
x=1/0;
//throw 10;
}
A(){
try{
f();
}
catch(int e){
cout << "Exception caught\n";
}
}
};
int main (int argc, const char * argv[])
{
A a;
return 0;
}
カスタムスロー10をキャッチできる理由。x=1/0ではありません。