Подтвердить что ты не робот

Qt и стратегия обработки ошибок

Собственно, я понимаю основные плюсы и минусы использования исключений. И я использую их в своих проектах по умолчанию в качестве стратегии обработки ошибок. Но теперь я начинаю проект Windows CE с библиотекой Qt, и я вижу, что разработчики Qt отказались использовать исключения в иерархии классов.

Итак, если я использую исключения, мне нужно будет тщательно перевести их с кодами ошибок (или некоторыми объектами или просто усвоить) на мои границы кода /Qt. В противном случае я могу отказаться от использования исключений в моем коде и перейти к другой стратегии.

Какова была бы лучшая стратегия обработки ошибок в моем случае - использовать исключения или использовать коды ошибок или т.д.?? У вас есть опыт разработки Qt и какая стратегия обработки ошибок вы использовали?

4b9b3361

Ответ 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. Избегайте этого, и не должно быть никаких проблем с исключениями.