Неспособный поймать исключение C++ с помощью выгоды (…)

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

14
задан Michael Bray 3 September 2009 в 14:21
поделиться

4 ответа

Нарушение прав доступа AFAIK не вызывает исключения ... по крайней мере, не стандартные!

Возможно, поможет перехват «родного» исключения для Windows: https://web.archive.org/web/20081022160935/http://www.gamedev.net/reference/articles/article2488.asp

11
ответ дан 1 December 2019 в 13:09
поделиться

Нарушение прав доступа не является исключением C ++. Это структурное исключение Windows. Вам нужно будет использовать _set_se_translator (), если вы хотите поймать их в catch (...).

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

8
ответ дан 1 December 2019 в 13:09
поделиться

То, что вы описываете, очень похоже на вызов :: terminate () из среды выполнения C ++.

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

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

0
ответ дан 1 December 2019 в 13:09
поделиться

Если вы работаете на платформе Windows, вы можете попробовать взглянуть на __try

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

1
ответ дан 1 December 2019 в 13:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: