Нет простого способа сделать то, что вы хотите, здесь, в C ++. Ваши инструменты - это стандартный механизм исключений C ++ и sigaction
. Обработчик sigaction
может вернуть управление туда, где он остановился. Это может бросить, хотя был спор о безопасности этого. Кто-то скажет, что он должен установить атомарную переменную и вернуться. (Проблема в том, что компилятор не видит возможности броска и поэтому не готовится к нему.)
Если вы работаете в C, у вас есть дополнительные сложные опции, включающие sigsetjmp
, что более или менее относится к стероидам, рискам и всем прочим.
Поскольку вы не указали язык или какое исключительное условие вы пытаетесь решить, нецелесообразно предлагать более конкретный рецепт.