使类型安全投入C++

TCS*_*TCS 4 c++ exception-handling exception

这是一个理论问题,可以更好地理解异常的工作原理.

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

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

非常感谢!

Raf*_*fid 7

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

如何在堆栈上分配的异常超出了它们的范围?

不,在堆中创建异常不是一个好习惯,因为那时你必须在catch块中管理它.标准是按价值投掷并通过引用捕获.检查这些以获取更多信息:

C++ catch块 - 按值或引用捕获异常?

在C++中通过指针捕获异常