找回密码
 注册
关于网站域名变更的通知
查看: 140|回复: 2
打印 上一主题 下一主题

错误概念1.1 错误分类

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-3-25 14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
从严重性而言,程序错误可分为致命性和非致命性两类。对于致命性错误,无法执行恢复动作,最多只能在用户屏幕上打印出错消息或将其写入日志文件,然后终止程序;而对于非致命性错误,多数本质上是暂时的(如资源短缺),一般恢复动作是延迟一些时间后再次尝试。
从交互性而言,程序错误可分为用户错误和内部错误两类。用户错误呈现给用户,通常指明用户操作上的错误;而程序内部错误呈现给程序员(可能携带用户不可接触的数据细节),用于查错和排障。
应用程序开发者可决定恢复哪些错误以及如何恢复。例如,若磁盘已满,可考虑删除非必需或已过期的数据;若网络连接失败,可考虑短时间延迟后重建连接。选择合理的错误恢复策略,可避免应用程序的异常终止,从而改善其健壮性。
1.2 处理步骤
错误处理即处理程序运行时出现的任何意外或异常情况。典型的错误处理包含五个步骤:
  • 程序执行时发生软件错误。该错误可能产生于被底层驱动或内核映射为软件错误的硬件响应事件(如除零)。
  • 以一个错误指示符(如整数或结构体)记录错误的原因及相关信息。
  • 程序检测该错误(读取错误指示符,或由其主动上报);
  • 程序决定如何处理错误(忽略、部分处理或完全处理);
  • 恢复或终止程序的执行。
    & m7 C; H) q9 t# |" K
上述步骤用C语言代码表述如下:
intfunc
{
intbIsErrOccur = 0;
//do something that might invoke errors
if(bIsErrOccur) //Stage 1: error occurred
return-1; //Stage 2: generate error indicator
//...
return0;
}
intmain( void)
{
if(func != 0) //Stage 3: detect error
{
//Stage 4: handle error
}
//Stage 5: recover or abort
return0;
}
调用者可能希望函数返回成功时表示完全成功,失败时程序恢复到调用前的状态(但被调函数很难保证这点)。

: `' t3 T6 v* K$ p9 _/ b* J

该用户从未签到

2#
发表于 2022-3-25 15:06 | 只看该作者
合理回复,避免异常终止
4 p1 S* }$ G4 @8 [% P; _4 {: I

该用户从未签到

3#
发表于 2022-3-25 15:48 | 只看该作者
分析的很不错,赶紧收藏起来
! j; l- I) E1 D3 E, r
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-19 07:00 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表