C语言错误处理

C语言错误处理

1、什么是错误处理?

程序错误是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。错误处理程序是指软件系统中用于处理错误的程序。在编程语言中,错误处理模型一般可以分为:返回值模型、全局错误标志模型、恢复性模型和限制性模型。

2、C语言的错误处理

C程序员没有异常机制,一般用返回值标识错误,判断返回值进行错误的处理。

2.1 返回值表示出错的常见情况

1、如果函数返回值是int ,并且返回的数据不可能是负数,直接返回-1表示出错,非负数代表正常返回数据。

2、如果函数返回值是int ,但返回的数据也可能是负数;返回0代表正常,-1代表出错。用指针类型的参数带出返回的数据。

3、如果函数返回值是指针类型,返回NULL(0)代表出错,其他代表正常。

4、如果函数不需要考虑出错情况,可以用void返回值。

注:以上4中情况,不是绝对的,只是经验的总结。比如:有些时候,返回-1代表错误的指针。

2.2 C标准的错误处理

C标准中,对于错误处理提供了一个全局变量和3个函数:

全局变量:

errno --外部的全局变量,用于储存错误的编号。

函数:

strerror()/perror()/printf() 都可以把错误的编号变成错误的信息。

1、strerror()  --传入一个错误的编号,返回一个错误的信息

2、perror()    --打印当前的错误信息(自动查找errno得到的错误编号)

3、printf("%m")    --打印当前错误信息(自动查找errno)

errno的值,在调用函数时,如果函数出错,errno就会改变;但在调用函数时,如果不出错,errno的值不变。因此,不能用errno判断某个函数是不是出错,只能通过函数的返回值判断是否出错。errno的作用是出了错之后,获得具体的错误信息。

注:errno不是所有的函数都使用,某些函数没有使用(线程)

示例:

fopen("a.txt") perror("opena");

fopen("b.txt") perror("openb");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一朝英雄拔剑起

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值