• 15862阅读
  • 2回复

【提问】关于Qt异常处理(已解决) [复制链接]

上一主题 下一主题
离线午小夜
 

只看楼主 倒序阅读 楼主  发表于: 2009-11-19
问题描述:
        在写程序的过程中,有异常处理机制的需求。因为程序是CS模式,涉及到网络连接和数据库查询。当网络掉线或者数据库未打开,就抛出异常。然后再需要执行的地方去catch异常。可是出现了问题:没有按预期的那样捕获到异常,而且程序退出了,本来是打算异常发生后,捕获处理掉的。。运行过程中output中输出以下内容:
        
  1. Qt has caught an exception thrown from an event handler. Throwing
  2. exceptions from an event handler is not supported in Qt. You must
  3. reimplement QApplication::notify() and catch all exceptions there.
  4. QWaitCondition: Destroyed while threads are still waiting


        原来写了个小测试程序,能够达到我的预期目标。。。代码和大家分享下:
  1. #include "widget.h"
  2. #include <QMessageBox>
  3. #include <QLabel>
  4. Widget::Widget(QWidget *parent)
  5.     : QWidget(parent)
  6. {
  7.     try
  8.     {
  9.         int a = 10,b = 11;
  10.         int c = biggerthan(a,b);
  11.         QLabel* label = new QLabel(this);
  12.         QString s;
  13.         s.setNum(c);
  14.         label->setText(s);
  15.         label->show();
  16.     }
  17.     catch(QString exception)
  18.     {
  19.         QString s = exception;
  20.         QMessageBox::about(0,"error",s);
  21.     }
  22. }
  23. Widget::~Widget()
  24. {
  25. }
  26. int Widget::biggerthan(int a,int b)
  27. {
  28.     if(a<b)
  29.     {
  30.         throw tr("you were so foolish");
  31.     }
  32.     else
  33.     {
  34.         return a-b;
  35.     }
  36. }


如何解决:
        提示说用 QApplication::notify()  重新实现。。。不知道怎么弄,请大家赐教。谢谢!
[ 此帖被午小夜在2009-11-19 14:35重新编辑 ]
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线yb824
只看该作者 1楼 发表于: 2009-11-19
throw QString(tr("you were so foolish"));这样就没错了
离线午小夜

只看该作者 2楼 发表于: 2009-11-19
引用第1楼yb824于2009-11-19 14:13发表的  :
throw QString(tr("you were so foolish"));这样就没错了



程序异常处理已经解决,原因是异常定义的地方错了.
PS:上面给出的代码是正确代码...
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
快速回复
限100 字节
 
上一个 下一个