Qt和错误处理策略

Ale*_*Che 12 c++ qt exception

实际上,我确实理解使用异常的主要优点和缺点.我默认将它们用在我的项目中作为错误处理策略.但现在我正在使用Qt库启动Windows CE项目,我发现Qt创建者拒绝在类层次结构中使用异常.

因此,如果我使用异常,我需要在my/Qt代码边界上小心地将它们转换为错误代码(或某些对象,或者只是吞下).否则,我可以拒绝在我的代码中使用异常并切换到其他策略.

在我的情况下,最好的错误处理策略是什么 - 使用异常或使用错误代码,等等......?您是否有使用Qt开发的经验以及您使用的错误处理策略?

che*_*eez 8

覆盖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;
Run Code Online (Sandbox Code Playgroud)


ere*_*der 0

Qt 不支持从事件处理程序中抛出异常。避免这种情况,并且异常也不应该有任何问题。