Qt и стратегия обработки ошибок
Собственно, я понимаю основные плюсы и минусы использования исключений. И я использую их в своих проектах по умолчанию в качестве стратегии обработки ошибок.
Но теперь я начинаю проект Windows CE с библиотекой Qt, и я вижу, что разработчики Qt отказались использовать исключения в иерархии классов.
Итак, если я использую исключения, мне нужно будет тщательно перевести их с кодами ошибок (или некоторыми объектами или просто усвоить) на мои границы кода /Qt. В противном случае я могу отказаться от использования исключений в моем коде и перейти к другой стратегии.
Какова была бы лучшая стратегия обработки ошибок в моем случае - использовать исключения или использовать коды ошибок или т.д.??
У вас есть опыт разработки Qt и какая стратегия обработки ошибок вы использовали?
Ответы
Ответ 1
Переопределить QApplication:: notify() и обрабатывать исключения там (не 100% от возвращаемого значения). Вы можете "выбросить" исключения из обработчиков сигналов, но они не распространяются на Qt таким образом.
bool
notify(QObject * rec, QEvent * ev)
{
try
{
return QApplication::notify(rec,ev);
}
catch(my::Exception & e)
{
QMessageBox::warning(0,
tr("An error occurred"),
e.message());
}
catch(...)
{
QMessageBox::warning(0,
tr("An unexpected error occurred"),
tr("This is likely a bug."));
}
return false;
Ответ 2
Выбрасывание исключений из обработчика событий не поддерживается в Qt. Избегайте этого, и не должно быть никаких проблем с исключениями.