2014-09-24 8 views
1

Есть ли способ предотвратить «Gtk :: Main :: итерации()» от исключения?Предотвращение исключения GTKMM от исключений для ловли

Всякий раз, когда в обработчике есть исключение, оно улавливается, а затем программа заканчивается SIGTRAP (в Linux). С сообщением:

(test.debug.bin:32233): glibmm-ERROR **: 
unhandled exception (type std::exception) in signal handler: 
what: test 
+0

Это также происходит, если вы не отлаживаете? – Peter

+0

Только отладка теперь, когда вы спрашиваете. – chila

+0

Итак, исключение не зацепило, если ваша не отладка? Этот SIGTRAP вероятен только для вашего отладчика. От «$ man 7 signal»: «SIGTRAP 5 Core Trace/trappoint trap» См. Также: http://unix.stackexchange.com/questions/131044/dialog-trap-and-sigtrap – Peter

ответ

3

Нет, извините. Это необработанное сообщение об исключении является лишь более полезной альтернативой сбою без сообщения, которое вы получите, если gtkmm этого не сделает. Вам нужно обрабатывать исключения в обработчиках сигналов в вашем собственном коде.

Это потому, что обработчик сигнала gtkmm на самом деле вызывается кодом GTK + C, скомпилированным как C, и который не может передавать исключение C++ с помощью кода C, вплоть до того, что код C++ мог бы вызвать код C.