Смотря на возможные конфигурации с gconf-редактор , я боюсь, что это не возможно, не изменяя исходный код и перекомпилировав Наутилус.
Нарушение прав доступа AFAIK не вызывает исключения ... по крайней мере, не стандартные!
Возможно, поможет перехват «родного» исключения для Windows: https://web.archive.org/web/20081022160935/http://www.gamedev.net/reference/articles/article2488.asp
Нарушение прав доступа не является исключением C ++. Это структурное исключение Windows. Вам нужно будет использовать _set_se_translator (), если вы хотите поймать их в catch (...).
Вероятно, вам стоит погуглить по всем причинам, по которым catch (...) - зло, и убедитесь, что вы действительно хотите это сделать .
То, что вы описываете, очень похоже на вызов :: terminate () из среды выполнения C ++.
Обычно это вызвано так называемым двойным исключением - где-то возникает исключение, начинается раскрутка стека и в одном из деструкторов, вызванных во время раскрутки стека, также возникает исключение. В этом случае вызывается :: terminate (), и вы не можете реально помочь программе.
Если это так, единственный выход - получить новую версию библиотеки, в которой исключения не допускаются за пределы деструкторов. Вы можете проверить это довольно легко - после загрузки библиотеки вызовите :: set_terminate () и укажите свою собственную функцию и проверьте, вызывается ли она до сбоя вашей программы.
Если вы работаете на платформе Windows, вы можете попробовать взглянуть на __try
. Однако обратите внимание, что нет особого смысла продолжать выполнение, если вы действительно не уверены, что можете изолировать и обработать исключение. .