我一直想知道,由于Qt几乎使用了标准中的所有C++特性,并且以一种奇妙和创新的方式,并且每当它不使用特定功能时,它都有一个完全有效和适用的原因.在这种情况下,为什么没有Qt类使用throw关键字和throw任何例外?他们try ... catch在我们的Qt编写代码中不需要阻塞的原因是什么?
就我个人而言,我自己也不喜欢它并且从不使用它,无论我是否正在使用Qt并始终使用错误代码并返回值而不是抛出异常对象.但为什么我不在他们的文档中看到QException类?Qt开发人员对此有何看法?
所以我在开发中使用Qt并且非常喜欢它.Qt对象的通常设计模式是使用它们来分配它们new.
几乎所有示例(尤其是Qt设计器生成的代码)都不会检查std::bad_alloc异常.由于分配的对象(通常是小部件等)很小,因此这几乎不成问题.毕竟,如果你没有分配20个字节之类的东西,那么你可以做的事情并不多,无法解决问题.
目前,我采用了一种策略,即在try/catch中包装"large"(大小超过一页或两页)分配.如果失败了,我会向用户显示一条消息,几乎任何更小的消息,我只会让应用程序崩溃并出现std::bad_alloc异常.
所以,我想知道这方面的思想是什么?
检查每一项new操作是否是好政策?或者只有我希望有可能失败的?
此外,在处理资源可能受到更多限制的嵌入式环境时,这显然是一个完全不同的故事.我在桌面应用程序的上下文中询问,但也会对涉及其他场景的答案感兴趣.