程序出错,你回滚了吗?
来源:互联网 发布:生意通流量软件 编辑:程序博客网 时间:2024/06/03 01:39
转载请加注:Qdieyou
请大家观察下以下代码片段:
FILE *fin;
FILE *fout;
fin = fopen("test.txt", "r");
if (fin == NULL) {
return 0;
}
fout = fopen("good.txt","w");
if (fout == NULL) {
return 0;
}
两次打开文件都进行了防错设计,但是却忽略了程序回滚,当fout打开文件出错时,在return之前,你是否忘了fin指针还是打开着呢?虽然这些可以在程序return后由系统来关闭,但显式的关闭已打开的资源是一个良好的编程习惯。
经过修改的良好代码如下:
FILE *fin;
FILE *fout;
fin = fopen("test.txt", "r");
if (fin == NULL) {
return 0;
}
fout = fopen("good.txt","w");
if (fout == NULL) {
fclose(fin);
return 0;
}
类似的情况还有很多,比如说,两次申请内存,第二次申请失败,在返回时,记得把第一次申请的空间释放,以免造成内存遗漏。
FILE *fin;
FILE *fout;
fin = fopen("test.txt", "r");
if (fin == NULL) {
return 0;
}
fout = fopen("good.txt","w");
if (fout == NULL) {
return 0;
}
两次打开文件都进行了防错设计,但是却忽略了程序回滚,当fout打开文件出错时,在return之前,你是否忘了fin指针还是打开着呢?虽然这些可以在程序return后由系统来关闭,但显式的关闭已打开的资源是一个良好的编程习惯。
经过修改的良好代码如下:
FILE *fin;
FILE *fout;
fin = fopen("test.txt", "r");
if (fin == NULL) {
return 0;
}
fout = fopen("good.txt","w");
if (fout == NULL) {
fclose(fin);
return 0;
}
类似的情况还有很多,比如说,两次申请内存,第二次申请失败,在返回时,记得把第一次申请的空间释放,以免造成内存遗漏。
- 程序出错,你回滚了吗?
- 出错回滚的方法
- 程序出错了,怎么办
- @Transactional 出错后不会回滚
- sql更新出错,事物回滚
- 安装Adobe Reader出错回滚
- 出错了,你改怎么办?
- CSDN版面出错了,你家里人知道吗?
- 这个程序怎么出错了
- 程序出错了还会继续执行吗?
- 跟机器人滚床单?你愿意吗?
- 你学会调试程序了吗?
- 你学会调试程序了吗?
- 小程序发布,你方了吗?
- BCP IN出错回滚及错误捕捉
- 存储过程使用事务与出错回滚
- oracle提交了之后怎么回滚
- 被小程序坑了这几点,你遇到了吗?
- 关于Java栈与堆的思考
- 子页面关闭,刷新父页面
- 用弱引用堵住内存泄漏
- 最近似乎很忙
- 编程8荣8耻
- 程序出错,你回滚了吗?
- 一个理解wait()与notify()的例子
- 面向对象的思维方式
- linux下配置oracle10g自启动
- VC的一些编译连接选项
- package 与 import
- Java多线程程序设计详细解析
- 设计一种注册验证算法模型
- Java是传值还是传引用