【发布时间】:2011-09-05 23:46:14
【问题描述】:
可能的重复:
How is the C++ exception handling runtime implemented?
How do exceptions work (behind the scenes) in c++
亲爱的,
我想知道,C++异常是如何实现的?
它实际上是否像在构建中那样使用 Setjump() 和 Longjump() 概念?
【问题讨论】:
可能的重复:
How is the C++ exception handling runtime implemented?
How do exceptions work (behind the scenes) in c++
亲爱的,
我想知道,C++异常是如何实现的?
它实际上是否像在构建中那样使用 Setjump() 和 Longjump() 概念?
【问题讨论】:
该标准没有定义编译器供应商必须如何实现异常。两种主要策略是跟踪表中的捕获位置或展开堆栈帧直到找到合适的捕获位置。
例如,MSVC 使用 SEH(结构化异常处理程序)来实现 C++ 异常,而 GCC 使用纯地址表方法。其他编译器仍然可以使用堆栈展开,如果它们保留了足够的帧信息。
【讨论】:
您应该检查第 15.1 节抛出标准异常。
【讨论】: