分享

C语言实现try catch处理

 庆亮trj21bcn0z 2017-11-18

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

try{

程序语句;

}catch(Exception ex){

异常处理;

}

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

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

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

(1)异常处理框架

C语言实现try catch处理

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

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

C语言实现try catch处理

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

C语言实现try catch处理

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

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

C语言实现try catch处理

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

C语言实现try catch处理

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

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

C语言实现try catch处理

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

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

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

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

C语言实现try catch处理

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

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

C语言实现try catch处理

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多