c语言error code,c – 用于std :: error_code的用例

最近我一直在转换一些库,使用< system_error>设施在C 11.

我很难理解std :: error_code与std :: error_condition的用例.

基本的区别是std :: error_code应该表示一个系统或平台特定的错误,而std :: error_condition是API或用户界面应该返回的抽象错误.

好的 – 但是我很难理解为什么我们会在实践中使用std :: error_code.在我看来,你要去:

处理系统特定的错误报告机制(如

说,errno或从POSIX呼叫返回的东西,或者说一个电话

在Linux上使用SO_ERROR来getsockopt)可以轻松地实现

通过std :: errc枚举转换为std :: error_condition,这些枚举应该是可移植的.

>使用用户定义的错误类别,代表应用程序级别

或业务逻辑错误,如“无效的社会保障号码”或

什么 – 这也将是一个用例

的std :: error_condition.

>处理一些定义自己的错误报告机制的低级接口或库,例如OpenSSL,在这种情况下,您将直接使用特定于平台的错误机制.在这种情况下,您需要将这些错误转换或映射到std :: error_code.但是,如果要将这些平台特定的错误转换成类似std :: error_code的常规错误,为什么不将其转换为std :: error_condition?

此外,由于POSIX系统错误应该是可移植的,并且由于它们通过std :: errc枚举与std :: error_condition一一对应,所以我找不到std :: error_code的任何用例.大多数Linux / UNIX系统调用设置errno,它应该可移植地映射到std :: error_condition.

所以我没有看到任何使用std :: error_code的用例.那么,我们想要使用std :: error_code而不是std :: error_condition的例子是什么呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值