从静态[非动态]对象的C ++构造函数中抛出异常

时间:2015-09-16 00:22:28

标签: c++ exception constructor

我似乎无法从C ++构造函数中为在堆栈上实例化的对象抛出异常(而不是使用new关键字分配的动态对象)。这是如何完成的?

SELECT t.level, f.family
FROM families f
    JOIN (
            SELECT lf.id_family, l.level
            FROM  level_families lf
                    JOIN levels l
                    ON lf.id_levels=l.id_levels
        ) t
    ON f.id_family=t.id_family;

1 个答案:

答案 0 :(得分:0)

您需要重新编码代码:

int main(void)
{
    try { 
        AClass obj; 
        obj.method();
    } // obj is only valid in the scope of the try block
    catch (std::exception& e)
    {

    }
}

如果您需要捕获&#34的异常,则无法创建一个AClass对象"与其他异常分开,然后为该情况抛出一个唯一的异常,并为该类型的异常添加一个特定的catch子句:

class no_create : public std::runtime_error { 
    // ...
};

try {
     AClass obj;
     obj.method();
}
catch (no_create const &e) { 
    std::cerr << e.what() << "\n";
}
catch (std::exception const &e) { 
    //  process other exceptions
}