专栏首页C++核心准则原文翻译C++核心准则​E.28:避免基于全局状态的错误处理(例如errno)

C++核心准则​E.28:避免基于全局状态的错误处理(例如errno)

E.28: Avoid error handling based on global state (e.g. errno)

E.28:避免基于全局状态的错误处理(例如errno)

Reason(原因)

Global state is hard to manage and it is easy to forget to check it. When did you last test the return value of printf()?

全局状态难于管理而且容易忘记检查。你上一次检查printf的返回值是什么是时候?

See also: Simulating RAII

参见:模仿RAII

Example, bad(反面示例)

int last_err;

void f(int n)
{
    // ...
    p = static_cast<X*>(malloc(n * sizeof(X)));
    if (!p) last_err = -1;     // error if memory is exhausted
    // ...
}
Note(注意)

C-style error handling is based on the global variable errno, so it is essentially impossible to avoid this style completely.

C风格错误处理基于全局变量errno,因此这种风格的处理方式在本质上无法避免。

Enforcement(实施建议)

Awkward.

很难。

原文链接

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#e28-avoid-error-handling-based-on-global-state-eg-errno

本文分享自微信公众号 - 面向对象思考(OOThinkingDalian),作者:面向对象思考

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++核心准则ES.34:不要定义C风格的可变参数函数

    Not type safe. Requires messy cast-and-macro-laden code to get working right.

    面向对象思考
  • C++核心准则CP.9:尽可能使用工具检查并发代码

    CP.9: Whenever feasible use tools to validate your concurrent code

    面向对象思考
  • C++核心准则编译边学-F.21 如果需要返回多个输出值,最好返回结构体或者tuple

    A return value is self-documenting as an "output-only" value. Note that C++ does...

    面向对象思考
  • 从EVM到Ewasm,硬核对比以太坊虚拟机……

    以太坊是一种内置图灵完备编程语言的区块链。任何人都可以利用以太坊的智能合约创造去中心化应用。

    区块链大本营
  • AI可独立诊断眼科疾病,FDA已批准其上市

    都说人工智能不能取代医生,只能成为医生的工具,很快,打脸的事情就要来了。据外媒报道,美国食品及药品管理局(FDA)首次批准了一种人工智能诊断设备,该设备不需要专...

    机器人网
  • 腾讯云上 Winpcap 网络编程四之主机通信

    由于腾讯云上提供了Windows系统,所以我们这次Winpcap编程选用腾讯云主机实验,让大家简要了解两台云主机的通信方法以及实践过程。

    崔庆才
  • Android中Button

    1.android:drawableTop="@drawable/accept"设置在按钮文本的上面绘制指定图片。可同时指定drawableLeft等其它方向 ...

    欢醉
  • 我来重新学习 javascript 的面向对象(part 1)

    很多job 的描述都说要求精通 javascript 面向对象编程,但是根据一般的套路,写精通其实就是熟练,写熟练其实就是一般,写一般其实就是懵逼!

    前端正义联盟
  • R语言:EM算法和高斯混合模型的实现

    期望最大化(EM)算法是用于找到最大似然的或在统计模型参数,其中该模型依赖于未观察到的潜变量最大后验(MAP)估计的迭代方法。期望最大化(EM)可能是无监督学习...

    拓端
  • TCP/IP(四)网络层

    前言 前面给大家介绍了计算机网络的基本概述,物理层和数据链路层。这一篇给大家介绍面试中经常会被问到的网络层。在介绍之前我们回顾一下之前学习的知识!   CP/I...

    用户1195962

扫码关注云+社区

领取腾讯云代金券