嵌入式系统C编程之错误处理

文章探讨了嵌入式系统中C编程的错误处理,包括错误的分类、处理步骤以及错误传递的方式。错误分为致命性和非致命性,用户错误和内部错误。处理步骤涉及错误记录、检测、决策和执行恢复或终止。错误传递通过返回值、全局状态标志errno等方式进行,但这些方式各有优缺点。文章提醒读者在使用errno时注意其可能被其他库函数修改,以及确保在检查errno前避免调用可能设置errno的函数。
摘要由CSDN通过智能技术生成

一 错误概念

1.1 错误分类

从严重性而言,程序错误可分为致命性和非致命性两类。对于致命性错误,无法执行恢复动作,最多只能在用户屏幕上打印出错消息或将其写入日志文件,然后终止程序;而对于非致命性错误,多数本质上是暂时的(如资源短缺),一般恢复动作是延迟一些时间后再次尝试。

从交互性而言,程序错误可分为用户错误和内部错误两类。用户错误呈现给用户,通常指明用户操作上的错误;而程序内部错误呈现给程序员(可能携带用户不可接触的数据细节),用于查错和排障。

应用程序开发者可决定恢复哪些错误以及如何恢复。例如,若磁盘已满,可考虑删除非必需或已过期的数据;若网络连接失败,可考虑短时间延迟后重建连接。选择合理的错误恢复策略,可避免应用程序的异常终止,从而改善其健壮性。

1.2 处理步骤

错误处理即处理程序运行时出现的任何意外或异常情况。典型的错误处理包含五个步骤:

1) 程序执行时发生软件错误。该错误可能产生于被底层驱动或内核映射为软件错误的硬件响应事件(如除零)。

2) 以一个错误指示符(如整数或结构体)记录错误的原因及相关信息。

3) 程序检测该错误(读取错误指示符,或由其主动上报);

4) 程序决定如何处理错误(忽略、部分处理或完全处理);

5) 恢复或终止程序的执行。

二 错误传递

2.1 返回值和回传参数

C语言通常使用返回值来标志函数是否执行成功,调用者通过if等语句检查该返回值以判断函数执行情况。

1) 代码可读性降低

没有返回值的函数是不可靠的。但若每个函数都具有返回值,为保持程序健壮性,就必须对每个函数进行正确性验证,即调用时检查其返回值。这样,代码中很大一部分可能花费在错误处理上,且排错代码和正常流程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值