这是一个理论问题,可以更好地理解例外的运作方式。
我需要检查什么才能确保我的课程安全?当我从堆栈的角度抛出异常时会发生什么?
例如,如果我在堆栈中创建一个对象,那么当我离开作用域时它应该被销毁,但是当我抛出该对象时会发生什么?这样做是安全的还是我必须在堆上创建对象?
非常感谢!
答案 0 :(得分:7)
“异常对象被复制到一个特殊的位置,以便在堆栈展开后继续存在。”
How are exceptions allocated on the stack caught beyond their scope?
不,在堆中创建异常不是一个好习惯,因为那样你就必须在catch块中管理它。标准是按价值投掷并通过引用捕获。请查看以下内容以获取更多信息: