我应该如何使用C++;构造函数异常? 我直到几天前才尝试使用C++异常,我不确定我是否做得对。我试图对一个失败的构造函数抛出一个异常,比如 X::X() { /*...*/ if(error) throw; /*...*/ }

我应该如何使用C++;构造函数异常? 我直到几天前才尝试使用C++异常,我不确定我是否做得对。我试图对一个失败的构造函数抛出一个异常,比如 X::X() { /*...*/ if(error) throw; /*...*/ },c++,exception,constructor,C++,Exception,Constructor,并且像这样使用它: try { X a; X b; X c; } catch (...) { // error handling } 调试器(VS)说抛出时有一个未经处理的异常。throw之后的代码被执行(我认为throw就像return一样工作),而catch块不被执行。我错过了什么? 我可能把这篇文章简化了一点,但是在这里发布原始代码有点复杂。这是因为您没有抛出异常对象。你应该像这样使用投掷: throw std::runtime_error("Error

并且像这样使用它:

try {
    X a;
    X b;
    X c;
}
catch (...) {
    // error handling
}
调试器(VS)说抛出时有一个未经处理的异常。throw之后的代码被执行(我认为throw就像return一样工作),而catch块不被执行。我错过了什么?
我可能把这篇文章简化了一点,但是在这里发布原始代码有点复杂。

这是因为您没有抛出异常对象。你应该像这样使用投掷:

throw std::runtime_error("Error message");
然后你就可以通过电话来接它了

try {
    ...
} catch (const std::runtime_error& e) {
    /* Handling */
}

请查看标题。

这是因为您没有抛出异常对象。你应该像这样使用投掷:

throw std::runtime_error("Error message");
然后你就可以通过电话来接它了

try {
    ...
} catch (const std::runtime_error& e) {
    /* Handling */
}

请查看标题。

这是因为您没有抛出异常对象。你应该像这样使用投掷:

throw std::runtime_error("Error message");
然后你就可以通过电话来接它了

try {
    ...
} catch (const std::runtime_error& e) {
    /* Handling */
}

请查看标题。

这是因为您没有抛出异常对象。你应该像这样使用投掷:

throw std::runtime_error("Error message");
然后你就可以通过电话来接它了

try {
    ...
} catch (const std::runtime_error& e) {
    /* Handling */
}
查看标题。

您应该(通常是的某个子类的实例),例如

更多信息,请参阅

毫无例外,只有在一个公司内部才有意义

我同意:在构造函数中抛出异常是一种低级趣味

更多信息,请参阅

毫无例外,只有在一个公司内部才有意义

我同意:在构造函数中抛出异常是一种低级趣味

更多信息,请参阅

毫无例外,只有在一个公司内部才有意义

我同意:在构造函数中抛出异常是一种低级趣味

更多信息,请参阅

毫无例外,只有在一个公司内部才有意义


我同意:在构造函数中抛出异常是一种低级趣味。

你能发布一个吗?你能发布一个吗?你能发布一个吗?你能发布一个吗?如果不是谈论“异常类型”,而是指一个“异常对象”或仅仅是“某物”,这会更清楚。目前的工作表明,你需要抛出某种特殊类型的东西,但你几乎可以抛出任何东西(只要它是某种东西)。我改变了它,应该更多地关注我的语言,谢谢。如果它不是指“异常类型”,而是指“异常对象”或“某些东西”,这会更清楚。目前的工作表明,你需要抛出某种特殊类型的东西,但你几乎可以抛出任何东西(只要它是某种东西)。我改变了它,应该更多地关注我的语言,谢谢。如果它不是指“异常类型”,而是指“异常对象”或“某些东西”,这会更清楚。目前的工作表明,你需要抛出某种特殊类型的东西,但你几乎可以抛出任何东西(只要它是某种东西)。我改变了它,应该更多地关注我的语言,谢谢。如果它不是指“异常类型”,而是指“异常对象”或“某些东西”,这会更清楚。目前的工作表明,你需要扔一些特殊类型的东西,但你可以扔几乎任何东西(只要它是什么)。我改变了它,应该多看我的语言,谢谢。