c语言中catch函数,C语言实现try catch处理

我们都知道,在Java、C#等高级程序语言中,都自带有异常处理机制,其基本结构如下:

try{

程序语句;

}catch(Exception ex){

异常处理;

}

这样做不但可以防止程序异常终止,而且在出现错误时可以及时作一些释放资源处理,对程序能继续健壮的运行下去尤其重要。

但是C语言中没有这样异常处理机制,我们可以通过宏定义去实现类似这样的操作,这时候就使用到C语言强大而又被我们‘嫌弃’的goto语句了。

这里我们需要定义几个宏:

(1)异常处理框架

116539636_1_20171118070009623

在BEGINPROC和ENDPROC里处理我们的程序,有异常的情况时跳到CATCHERROR和ENDERROR里统一处理

(2)几种异常条件宏定义:

116539636_2_20171118070009733

(3)异常统一处理宏定义:

116539636_3_2017111807001014

下面我们来分析这三种情况:

(1)不满足某种条件产生异常跳转:

116539636_4_20171118070010139

这里是判断数组是否索引是否越界,如果越界则判断跳转失败,程序如何结构为:

116539636_5_20171118070010295

可以看到,这里打印了出错的函数名、行号和错误码,我们可以很容易的定位出错误

(2)出错的时候抛出错误,统一处理:

116539636_6_20171118070010358

这里我们打开文件或分配内存失败都统一到错误处理当中,而不是直接return返回。这是一种很好的处理方法,不然很容易导致内存泄露或文件未关闭,

从上面我们可以看出,当使用return语句时,文件未打开成功,则返回,而当文件打开成功,而内存申请失败的时候,我们很容易直接返回,而导致

文件未正常关闭。使用了框架后,我们把使用的资源都作一个统一的管理,这样就不会轻易造成资源泄露的问题了,同时也有问题定位打印信息

(3)执行函数是否成功而跳转:

116539636_7_20171118070010514

当函数执行的返回值不成功时,我们也进行到异常跳转,进行统一处理

以上就是C语言的一些常见的异常处理,当然还有其他的异常处理条件,但是基于以上框架可以很容易的做到。

116539636_8_20171118070010655

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值