14

我查看了 LLVM EH 内在函数以及 Itanium ABI 的文档,但我对一些事情感到困惑。

什么异常人格函数?它执行什么工作?我将如何创建一个?

4

1 回答 1

11

我有完全相同的问题。我刚刚发现这些文章彻底解释了它的工作原理,完整的异常处理过程,包括个性功能的确切目的和逐步实现。

为了对 SO 有答案,这里简要总结一下异常发生时的人格行为(但你真的应该看看这个家伙写的18 22 篇文章!):

  • 首先,它将为每个堆栈帧(查找阶段)调用一次,并且必须返回一个值(来自枚举)告诉展开当前堆栈帧是否能够捕获异常。预计个性将使用位于函数末尾的一组特定表来获取此信息。

  • 如果堆栈帧可以捕获异常,则将使用不同的actions参数(清理阶段)再次调用个性。

于 2013-05-20T22:12:01.977 回答