C++ 我们可以使用构造函数重新显示异常吗?如果是,为什么?

C++ 我们可以使用构造函数重新显示异常吗?如果是,为什么?,c++,c++11,C++,C++11,我们能重新开始吗对您总是可以重新抛出捕获的异常,让调用堆栈中的高层人员也处理它,或者让它在未捕获时终止程序。构造函数中的异常意味着发生了非常糟糕的事情,而且由于构造函数不能返回无效值来指示正确的对象构造失败,有3个选项:以某种特殊状态初始化对象,希望调用方代码中的其他地方能够正确检查和处理该对象,或者设置外部变量/标志以标记初始化失败,或者在释放其动态分配的任何内存后引发异常。通常,如果在完全构造对象之前抛出异常,则将为迄今为止构造的任何成员对象调用析构函数。如果在发生异常时部分构造了一个对象数

我们能重新开始吗对您总是可以重新抛出捕获的异常,让调用堆栈中的高层人员也处理它,或者让它在未捕获时终止程序。

构造函数中的异常意味着发生了非常糟糕的事情,而且由于构造函数不能返回无效值来指示正确的对象构造失败,有3个选项:以某种特殊状态初始化对象,希望调用方代码中的其他地方能够正确检查和处理该对象,或者设置外部变量/标志以标记初始化失败,或者在释放其动态分配的任何内存后引发异常。通常,如果在完全构造对象之前抛出异常,则将为迄今为止构造的任何成员对象调用析构函数。如果在发生异常时部分构造了一个对象数组,则只调用该数组构造对象的析构函数。此外,在捕获try块中发生的异常之前,会为try块中构造的每个自动对象调用析构函数。

此代码甚至不会编译。ITYM a=X;b=Y;。那是打字错误,兄弟,目的不太清楚。“我不知道你在问什么。”罗斯·艾哈迈德,不客气。考虑投票并接受我的答案;
class A
{
    int a,b;
  public:
    A(int X,int Y)
    {
        X = a;
        Y = b;
        try
        {
            if (b == 0)
                throw b;
            else
                cout << a / b;
        }
        catch (int a)
        {
            cout << a; //throw;can we rethrow??then what is purpose of it??
        }
    }
};