c++ - Qt和错误处理策略

标签 c++ qt exception

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

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

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

最佳答案

重写 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;

关于c++ - Qt和错误处理策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1578331/

相关文章:

python - Try...除了多个独立的语句外,执行尽可能多的语句

android - 无法生成签名的 apk,但工作正常

C++11 并行化 : bottleneck in Armadillo's set_seed_random()

c++ - 如何使用 OpenCV 从图像中去除径向失真?

linux - 在 Qt Creator 中,Ubuntu 中的用户片段在哪里?

c++ - 从端口读取时缺少 qserialport 数据,但返回 9 个可用字节

c++ - 具有模板类型的模板化模板参数列表

c++ - 如果类具有引用数据成员,为什么编译器不合成默认赋值运算符

c++ - 在 QTableView 的单个单元格中显示多个图标

java - getRaster 方法中出现数组越界异常