Что такое функция обработки исключений?

Я посмотрел документацию по встроенным функциям LLVM EH, а также Itanium ABI, и яЯ озадачен несколькими вещами.

Какиеявляется исключение личностной функции? Какие работы он выполняет? Как бы я занялся его созданием?

 ignorer08 июн. 2018 г., 17:04
Атрибут personal позволяет функциям определять, какую функцию использовать для обработки исключений.llvm.org/docs/LangRef.html#personality-function

Ответы на вопрос(1)

Решение Вопроса

эти статьи который подробно объясняет, как это работает, полный процесс обработки исключений, включая точное назначение функции личности и пошаговую реализацию.

Для получения ответа на вопрос SO приведем краткое описание поведения личности при возникновении исключения (но вам действительно следует взглянуть на 18 статей, которые этот парень написал об этом!):

Во-первых, он вызывается один раз для каждого кадра стека (фаза поиска) и должен возвращать значение (из перечисления), указывающее, что разматывать, может ли текущий кадр стека перехватить исключение. Ожидается, что личность будет использовать определенный набор таблиц, расположенных в конце функции, для получения этой информации.

Если кадр стека может поймать исключение, личность будет вызвана во второй раз с другимactions аргумент (фаза очистки).

Ваш ответ на вопрос