使类型安全投入C ++

时间:2014-02-09 08:08:24

标签: c++ exception exception-handling

这是一个理论问题,可以更好地理解例外的运作方式。

我需要检查什么才能确保我的课程安全?当我从堆栈的角度抛出异常时会发生什么?

例如,如果我在堆栈中创建一个对象,那么当我离开作用域时它应该被销毁,但是当我抛出该对象时会发生什么?这样做是安全的还是我必须在堆上创建对象?

非常感谢!

1 个答案:

答案 0 :(得分:7)

“异常对象被复制到一个特殊的位置,以便在堆栈展开后继续存在。”

How are exceptions allocated on the stack caught beyond their scope?

不,在堆中创建异常不是一个好习惯,因为那样你就必须在catch块中管理它。标准是按价值投掷并通过引用捕获。请查看以下内容以获取更多信息:

C++ catch blocks - catch exception by value or reference?

catch exception by pointer in C++