当前位置: 首页 > news >正文

搜狗怎么做网站自媒体平台app

搜狗怎么做网站,自媒体平台app,24小时有效地址域名,做网站防护的网站初步警告:异常安全功能不完整!一般情况下应该可以工作,但类仍然可能泄漏甚至崩溃。 Qt本身不会抛出异常。而是使用错误码, 但是C可能会抛出异常。此外,有些类有用户可见的错误消息,例如QIODevice::errorString()或QSqlQuery::lastError()。这…

初步警告:异常安全功能不完整!一般情况下应该可以工作,但类仍然可能泄漏甚至崩溃。

Qt本身不会抛出异常。而是使用错误码, 但是C++可能会抛出异常。此外,有些类有用户可见的错误消息,例如QIODevice::errorString()或QSqlQuery::lastError()。这有历史和现实的原因——打开异常可能会使库的大小增加20%以上。

下面几节将描述Qt在编译时启用异常支持时的行为。

容器

Qt的容器类通常是异常中立的。它们将在包含的类型T中发生的任何异常传递给用户,同时保持内部状态有效。

例子:

QList<QString> list;
...
try {list.append("hello");
} catch (...) {
}
// list is safe to use - the exception did not affect it.

抛出异常的容器类型可能是在在赋值或复制构造期间。对于这些类型,修改容器并返回值的函数使用起来是不安全的:

MyType s = list.takeAt(2);

在赋值s期间发生异常,因为赋值给s之前,索引2处的值已经从容器中移除。它已经被丢弃,没有恢复的机会。
正确的写法是:

MyType s = list.at(2);
list.removeAt(2);

如果赋值操作抛出,容器仍将包含该值;无数据丢失。
注意,隐式共享Qt类不会抛出它们的赋值操作符或复制构造函数,因此上面的限制不适用。

内存不足处理

大多数桌面操作系统都过度使用内存。这意味着即使在分配内存时没有足够的可用内存,malloc()或new运算符也会返回一个有效的指针。在这种系统上,不会抛出std::bad_alloc类型的异常。

在其他所有操作系统上,如果任何内存分配失败,Qt都会抛出类型为std::bad_alloc的异常。如果系统内存不足,或者没有足够的连续内存来分配请求的大小,那么分配可能会失败。

该异常情况有文档说明。例如,如果内存不足,QImage构造函数将创建一个null图像,而不是抛出异常。

从异常中恢复

目前,从Qt中抛出的异常(例如内存不足)中恢复的唯一支持用例是退出事件循环并在退出应用程序之前进行一些清理。

典型用例:

QApplication app(argc, argv);
...
int ret;
try {ret = app.exec();
} catch (const std::bad_alloc &) {// clean up here, e.g. save the session// and close all config files.return EXIT_FAILURE; // exit the application
}
...
return ret;

抛出异常后,与窗口服务器的连接可能已经关闭。在捕获异常后调用GUI相关函数是不安全的。

客户端代码中的异常

信号与槽位

从Qt的信号槽连接机制调用的槽中抛出异常被认为是未定义的行为,除非它在槽内处理:

State state;
StateListener stateListener;// OK; the exception is handled before it leaves the slot.
QObject::connect(&state, SIGNAL(stateChanged()), &stateListener, SLOT(throwHandledException()));
// Undefined behaviour; upon invocation of the slot, the exception will be propagated to the
// point of emission, unwinding the stack of the Qt code (which is not guaranteed to be exception safe).
QObject::connect(&state, SIGNAL(stateChanged()), &stateListener, SLOT(throwUnhandledException()));

如果像常规函数调用一样直接调用槽,则可能使用异常。这是因为直接调用槽时绕过了连接机制:

State state;
StateListener stateListener;// ...try {// OK; invoking slot directly.stateListener.throwException();
} catch (...) {qDebug() << "Handling exception not caught in slot.";
}

Exception Safety | Qt 5.15

http://www.laogonggong.com/news/22488.html

相关文章:

  • 注册深圳公司的好处建站 seo课程
  • 万网域名注册官网中文域名seo查询seo
  • 网站ie不兼容平台推广费用
  • 网站后台无法审核深圳网站优化公司
  • 晋城住房保障和城乡建设管网站搜索引擎竞价推广的优势
  • 做自己的网站logo抖音推广怎么做
  • 什么网站可以免费做视频宁波网站seo公司
  • 营销网站推广策略国外免费域名
  • 关键词优化公司优化大师是什么意思
  • 网站建设日程表精准营销平台
  • 网站页面设计模板图片俄国搜索引擎yandex入口
  • 新乡商城网站建设外贸推广如何做
  • 手机网站打不开的解决方法网络运营培训
  • 做版权素材网站门槛长沙网站优化方案
  • 属于网络制作平台的是郑州网站推广优化公司
  • 网站怎么做背景图片网站优化关键词排名
  • 免费做封面网站百度网盘下载安装
  • 北京做erp报价的网站活动推广方案
  • 新网官方网站登陆抖音推广
  • 学做网站的步骤aso优化什么意思
  • 辅导班广告去哪个网站做推广策略怎么写
  • 云南网站建设专业品牌搜索引擎营销的方法包括
  • 英文独立站建设公司哪家好短视频精准获客
  • 网站建设方案 文库网站建设包括哪些内容
  • html做的网站怎么发布百度推广怎么操作流程
  • 公众号电影网站是怎么做的东莞免费网站建设网络营销
  • 网站建设策划实训总结网站运营需要多少钱
  • 广西执业药师培训网站哪家培训机构好
  • 深圳公明网站建设公司seo基本步骤
  • 政府门户网站信息资源建设情况石家庄网站建设