Wikipedia говорит, что «кусок кода считается безопасным для исключений, если ошибки во время выполнения в коде не приведут к вредным последствиям, таким как утечка памяти, искаженные сохраненные данные или недопустимый вывод. Код, безопасный для исключения, должен удовлетворять инвариантам, помещенным в код, даже если происходят исключения ».Исключение безопасности в Qt
И, похоже, нам нужна обработка исключений для безопасности исключений. С другой стороны, обработка исключений не очень популярна в приложениях Qt, пока я вижу.
Каковы ваши лучшие практики в Qt для обеспечения безопасности исключений? Что вы используете вместо обработки исключений?
QT - очень старая библиотека и очень бедна, когда дело доходит до безопасности исключений. Посмотрите, как все виджеты должны быть выделены в виде кучи, но для RAII нет умного указателя. Лучшее, что вы можете сделать, это выделить их в auto_ptr и освободить память родительскому/макету при вставке.У них есть некоторые основные положения, такие как QMutexLocker, поскольку бросок, когда блокировка мьютекса заблокирована, будет катастрофической, но есть намного больше, что им нужно для обеспечения или много работы, которую вы должны будете сделать сами, чтобы использовать qt безопасным способом , – stinky472
@ stinky472: Неправильно. [QSharedPointer] (http://doc.trolltech.com/4.6/qsharedpointer.html) – MSalters
@ stinky472: Какие инструменты GUI позволяют виджетам выделяться в стек? И почему вы хотите это сделать? Звучит как «соломенный» аргумент. – kevinarpe