我们真的需要std :: error_category和std :: error_condition吗?

鲁帕切科

因此,在理解std::error_code工作原理的过程中,我开始怀疑我们是否真的需要std::error_conditionstd::error_category我想实现什么在这个这个教程和工作量是它是相当脆弱的(我目前套牢试图找出为什么这个代码会导致连接重复的符号错误一起不平凡。

子类化std::error_code,添加message属性和方法,然后std::error_code使其与定义了错误代码的枚举相比,难道不是很容易吗?我在努力理解为什么我需要std::error_categorystd::error_condition根本没有。

坦率

主要优点是它error_code是一种可复制的类型,可以在库之间传递,而无需涉及任何动态内存分配或模板化,这使其非常轻便且易于使用。

如果您正在编写一个完全独立的项目,那么可以,当您只有自己的类型时,错误代码和类别似乎过于复杂。

但是,编写打算供其他人使用的库时,事情会发生变化(例如,ASIO,因为您链接了think-async.com)。您可以让一个库接收一个error_code实例,并且它可以干净高效地传递它,而无需了解使用该库的代码的任何知识,也不必使每个错误处理函数都以错误类型为模板。

在这种情况下,错误类别在处理多个错误源时很重要,因为给定的错误代码可能基于错误源表示两种不同的含义。

编辑:注意,在您的第一个链接中,类别实际上是单例的。这是在维护轻量级服务中完成的,因为将指针复制到保证永远不会被删除或修改的对象是廉价的,内存安全的和线程安全的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

可以跨dll使用std :: error_category吗?

std :: error_category是否可用于动态消息?

我们真的需要使用</ body>和</ html>结束标记吗?

从相同值和相同类别构造的std :: error_code和std :: error_condition是否始终相等?

我们真的需要避免Kotlin中的Fragments和Activites具有默认值的构造函数吗?

我们真的需要单独的缩略图吗?

我们真的需要反应门户吗

我们不能管理std :: map <string,ofstream>吗?

我们需要std :: as_const()做什么?

为什么我们需要std :: nullopt

我们真的需要端口来实现无头服务吗?

我们真的需要python中的@staticmethod装饰器来声明静态方法吗

我们真的需要在Java RMI中创建Stub吗?

我们真的需要放置新表达式吗?

我们真的需要在Johnson算法中添加一个额外的节点吗?

我们真的需要今天在close()之前调用flush()吗?

我们真的需要使用聚合物吗?

Azure API Management Premium-我们真的需要备份策略吗

React Native:对于图像组件,我们真的需要定义尺寸吗?

我们真的需要为RPC导入Corda的代码吗?将来怎么样?

我们真的需要检查下载文件的完整性吗?

为什么我们同时需要std :: promise和std :: future?

我们需要同时需要require和Gemfile吗?

C#CopyFileEx-ProgressRoutine:我们真的需要在进行进度时关闭目标文件句柄吗?

我们需要公证框架(.framework),dylib和二进制文件吗?

我们还需要“新安置”和“新经营者”吗?

我们需要为 CocoaPods 和 Carthage 创建 iOS 通用框架吗?

我们需要使用webpack和typescript / angular2摇树吗?

我们需要匹配android项目中的package语句和kotlin文件的目录吗?