12-4 捕获委托构造函数的异常

捕获委托构造函数的异常

下面演示一个使用Function-try-block去捕获委托构造函数异常的例子。

#include <iostream>

class X
{
public:
X()
try : X(0)
{
}
catch (int e)
{
std::cout << "catch" << e << std::endl;
throw 3;
}

X(int a)
try : X(a, 0.)
{
}
catch (int e)
{
std::cout << "catch" << e << std::endl;
throw 2;
}

X(double b)
try : X(0, b)
{
}
catch (int e)
{
std::cout << "catch" << e << std::endl;
throw 1;
}

X(int a, double b) : a_(a), b_(b) { throw 0; }

private:
int a_;
double b_;
};

int main()
{
try
{
X x;
}
catch (int e)
{
std::cout << "catch" << e << std::endl;
}
}