这是一个理论问题,可以更好地理解异常的工作原理。
我需要检查什么以确保我的类(class)可以安全 throw ?从堆栈的角度来看,当我抛出异常时实际发生了什么?
例如,如果我在堆栈中创建一个对象,当我超出范围时它应该被销毁,但是当我抛出该对象时会发生什么?这样做安全吗,还是我必须在堆上创建对象?
非常感谢!
最佳答案
“异常对象被复制到一个特殊位置以在堆栈展开后继续存在。”
How are exceptions allocated on the stack caught beyond their scope?
不,在堆中创建异常不是一个好习惯,因为那样你就必须在 catch block 中管理它。标准是按值抛出,按引用捕获。检查这些以获取更多信息:
关于c++ - 使类型安全地投入 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656793/