C++异常是如何实现的(使用 Setjump() 和 Longjump() ?)

How C++ exception implemented (using Setjump() & Longjump() ?)

本文关键字:使用 Longjump Setjump 实现 异常 何实现 C++      更新时间:2023-10-16

可能的重复:
C++异常处理运行时是如何实现的
在c++中,异常是如何工作的(幕后)

尊敬的各位,

我想知道,C++异常是如何实现的?

它真的在使用Setjump()&Longjump()概念在构建中?

标准没有定义编译器供应商必须如何实现异常。两种主要策略是跟踪表格中的捕获位置,或者展开堆叠框架,直到找到合适的捕获位置。

例如,MSVC使用SEH(结构化异常处理程序)来实现C++异常,而GCC使用纯地址表方法。其他编译器仍然可以使用堆栈展开,如果它们保留了足够的帧信息。

您应该检查第15.1节抛出标准的异常。