什么是异常处理人格功能?

Pup*_*ppy 12 llvm

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

什么异常人格功能?它的表现是什么?我将如何创建一个?

Maë*_*son 11

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

为了在SO上得到答案,这里是一个异常发生时人格行为的简短摘要(但你真的应该看看这个人写的关于这个的18篇文章!):

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

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