gpt4 book ai didi

c++ - 从构造函数中抛出异常

转载 作者:行者123 更新时间:2023-11-30 02:08:10 40 4
gpt4 key购买 nike

出于好奇..

我注意到当我从构造函数中抛出异常时,如果我在 Debug模式下编译代码并且如果我单击继续调试(或继续单步执行),它不会退出构造函数直到它结束。请注意,我没有用 try{}catch{} 包装实例化 MyClass 对象的代码。

我在 Release模式下试过这个,但无法真正判断它是在第一次抛出还是最后一次抛出后退出构造函数。你知道在 Release模式下它是从第一次抛出还是最后一次抛出后离开 ctor 的吗?为什么它让我在调试时转到下一行?不应该只是退出它所在的范围吗?

MyClass::MyClass()
{
throw "exception1";
throw "exception2";
throw "exception3";
}

MyClass a;

最佳答案

我怀疑这是一个调试问题。默认情况下,未捕获的异常应该终止程序。但是您的调试器却在导致异常的那一行停止了程序。 “继续调试”按钮告诉调试器忽略最后一个致命问题并继续。

所以调试器在程序中继续,直到它到达第二个throw。这又是致命的。所以调试器停在那里。等等

如果有一个地方实际捕获了抛出的异常,您应该会看到不同的行为。

关于c++ - 从构造函数中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7198081/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com