c++ - 使类型安全地投入 C++

标签 c++ exception exception-handling

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

我需要检查什么以确保我的类(class)可以安全 throw ?从堆栈的角度来看,当我抛出异常时实际发生了什么?

例如,如果我在堆栈中创建一个对象,当我超出范围时它应该被销毁,但是当我抛出该对象时会发生什么?这样做安全吗,还是我必须在堆上创建对象?

非常感谢!

最佳答案

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

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

不,在堆中创建异常不是一个好习惯,因为那样你就必须在 catch block 中管理它。标准是按值抛出,按引用捕获。检查这些以获取更多信息:

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

catch exception by pointer in C++

关于c++ - 使类型安全地投入 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656793/

相关文章:

scala - 在 Scala 中过滤 Failure(t) 实例的惯用方式

c++ - 是否有记录代码执行的工具?

c++ - QProgressDialog 没有关闭

c# - WebAPI 过滤器的 ActionExecutedContext 中的异常属性为 null

Python:如何在异常捕获中避免代码重复?

sockets - Python3 从 self.connect(('badhost' ,6667) 时捕获错误

用于教学的 C++ 和 GUI

c++ - `fwrite` 不害怕 't work directly after ` 吗?

java - 运行时抛出异常和编译时抛出异常的区别

c++ - 在构造函数 C++ 中处理 Try-catch block