关于C语言中,出错处理的一般模型

总结使用goto语句和标号进行出错处理的一个代码框架,其核心思想是释放资源的顺序和申请资源的顺序相反,每一次释放资源的操作之前定义一个标号,每次系统操作失败后跳转到指定标号处,顺序释放所有的资源,其代码框架如下:

系统调用1:

        没有资源,直接退出

系统调用2

       失败跳转到err_1:;

系统调用3

        失败跳转到err_2;

...

系统调用n

        失败跳转到err_n-1;

 

err_n-1:

        释放系统资源调用n-1申请的资源

err_n-2:

        释放系统资源调用n-2申请的资源

。。。

err_1:

        释放系统调用1申请的资源

return res;