• 7883阅读
  • 4回复

qt异常处理相关问题 [复制链接]

上一主题 下一主题
离线satng
 

只看楼主 倒序阅读 楼主  发表于: 2010-08-30
— 本帖被 XChinux 执行加亮操作(2010-09-01) —

    QT_TRY
    {
               int a = 9;
               int b = 9;
               int c = a/(a-b);

               throw a;
               //asm("mov eax,0");

    }
    QT_CATCH (int)
    {
        qDebug() << "catch throw";
        //return 0;
    }
    catch(...)
    {
        qDebug() << "catch throw11111111";
    }
异常捕获不到?
离线XChinux

只看该作者 1楼 发表于: 2010-08-31
没查到 QT_TRY这种用法。直接用try() {} catch (int )不行吗?
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线mitchb011707

只看该作者 2楼 发表于: 2010-10-26
楼主,问题解决了吗?我也碰到了同样的问题,不知道怎么设置QT
离线lejcey

只看该作者 3楼 发表于: 2010-10-27
请看文档:

还是为大家翻译一下吧

Exception Safety
异常安全

Preliminary warning: Exception safety is not feature complete! Common cases should work, but classes might still leak or even crash.
先警告一下:异常安全的特性并不完全支持!多数情况可以正常工作,但是许多类依然会直接导致崩溃。

Qt itself will not throw exceptions. Instead, error codes are used. In addition, some classes have user visible error messages, for example QIODevice::errorString() or QSqlQuery::lastError(). This has historical and practical reasons - turning on exceptions can increase the library size by over 20%.
QT自己不会抛出任何异常,使用错误代码作为替代的方式。有些类会显示用户可读的错误信息,比如说QIODevice::errorString()和QSqlQuery::lastError(),调用它们将显示最后发生错误的原因,打开异常处理会使库的体积增加20%以上。

所以我也不喜欢使用异常,多数时候都是使用错误提示。个人感觉异常处理不是什么太好用的东西,不必过分强调,真正发生严重错误的时候,异常也很难挽救应用程序接下来的逻辑,抛出异常很容易,关键是抛出之后怎么处理,如果把异常抛给用户,和直接崩溃没有什么区别,个人感觉是徒增烦恼。
离线mitchb011707

只看该作者 4楼 发表于: 2010-12-07
我的qt程序也抓不到异常,后来使用vs2008编译qt程序,能抓到异常,这说明和编译器有关;
快速回复
限100 字节
 
上一个 下一个