Я использую Qt 4.8. Есть ли способ иметь глобальный блок try и catch для всего проекта. Например, если мое приложение имеет два файла .cpp. Возможно ли исключить исключение из обоих файлов .cpp?global try and catch block in qt
ответ
Вы можете поместить в скобки все содержимое вашей main()
функции следующим образом ::
int main(int argc, char *argv[])
{
int ret = 0;
try
{
QApplication a(argc, argv);
QWidget w;
w.show();
ret = a.exec();
}
catch(...)
{
/* ... */
}
return ret;
}
Смотри также: std::set_terminate()
Прежде всего, имейте в виду, что Qt не играть хорошо с исключениями , Он был разработан еще в те дни, когда исключения были довольно неясной особенностью C++, поэтому использование исключений обычно не считалось хорошей практикой для целого ряда связанных с реализацией причин.
Также имейте в виду, что, как в Qt 5.7 безопасность исключение не функционален, как официальный doc в настоящее время говорит:
Предварительное предупреждение: безопасность Исключение не функционален! Обычные случаи должны работать, но классы могут все еще течь или даже сбой.
Если вы используете соединения сигнального слота в своих классах, лучше всего обрабатывать исключения внутри слотов, которые могут их выбрасывать. Начиная с Qt 5.7, это не так: considered неопределенное поведение.
Если вы просто хотите, чтобы сделать некоторые очистки и/или регистрации ошибок на любом иногда неперехваченного исключения, вы можете обернуть весь main()
содержимое в Try/поймать блок, как следует из ответа на предыдущий вопрос или в качестве альтернативы вы можете wrap the Qt's main event loop в такой блок :
QApplication app(argc, argv);
...
try {
app.exec();
}
catch (const std::exception &) {
// clean up here, e.g. save the session
// and close all config files.
return 0; // exit the application
}
- 1. Try Catch block in Siebel
- 2. Assert in try catch block
- 3. Loop in try catch block
- 4. try catch block in Matlab
- 5. express.js global try/catch
- 6. Понимание try catch block
- 7. Try and Catch in phpmailer
- 8. R try catch block
- 9. Assert in Try..Catch block пойман
- 10. @ try @ catch block not catching in exception
- 11. Заменить try ... catch block in C#
- 12. Java Try Catch block
- 13. Try Catch Block в Java
- 14. Странное поведение try/catch block
- 15. Try-catch and print trace in elisp
- 16. try and catch error in android
- 17. Try/Catch Block Fails to Catch Exception
- 18. switch block try/catch exception
- 19. PHP try catch block syntax
- 20. try catch block not working
- 21. Fail try/catch block csv
- 22. Обработка исключений Try Catch block
- 23. Try/Catch and threading
- 24. try and catch error
- 25. Понимание try and catch
- 26. cin and try/catch
- 27. Basic Try And Catch
- 28. Использование Try and Catch
- 29. try/catch and return
- 30. Javascript try and catch