假设写操作中途抛出异常,是否有任何数据写入文件,或者文件中没有写入数据?如果CFile :: Write引发异常会发生什么情况?
1
A
回答
0
简短回答:很可能有些数据会写入文件,除非在写入操作开始时磁盘已满。
较长的答案:它将取决于Write调用抛出的CFileException。
http://msdn.microsoft.com/en-us/library/as5cs056(VS.80).aspx
0
既然你没有的CFile的内部的视图(或不应该,如果它的正确封装的),你需要依靠API的“契约”上。换句话说,除非文件明确告诉你在某些情况下会发生什么,否则你不能依赖它。
即使您有源代码并且可以弄清楚,API规范是合同,任何未指定的内容都可以随时更改。这就是为什么一些软件开发人员对发布内部结构非常谨慎的原因之一,因为它可以被视为永远支持它们。
如果您确实想确保文件在异常后处于已知状态,则需要对该行为进行编码。这可以是这样的:
- 在程序启动时备份文件(简单);或
- 在每次保存操作前备份它(仍然比较简单);或
- 在进行任何写入操作(复杂和缓慢)之前进行备份。
相关问题
- 1. 如果我的IExceptionPublisher引发异常,会发生什么情况?
- 2. 如果finally块引发异常,会发生什么情况?
- 3. 如果在Application_Start中引发未处理的异常,会发生什么情况?
- 4. 如果未捕获到异常,会发生什么情况?
- 5. 如果任何异常情况发生
- 6. 如果发生异常,Laravel DB Transaction会发生什么?
- 7. DatastoreService批量删除。如果发生异常,会发生什么
- 8. 在Data.Pool中,如果创建新资源的操作引发异常,会发生什么情况?
- 9. 如果在初始化静态局部变量之前发生异常,会发生什么情况?
- 10. 发生病情时会发生什么情况?
- 11. 在Java中,评估构造函数调用的参数时会发生什么情况会引发异常?
- 12. 如果在SqlDataReader之前关闭SqlConnection,会发生什么情况?
- 13. 如果我使用printf(“one \ 0two”),会发生什么情况;?
- 14. TFS - 如果我删除工作区会发生什么情况?
- 15. 如果浏览器不支持gzip,会发生什么情况?
- 16. 如果NSURLCache已满,会发生什么情况?
- 17. 如果未安装代码合同,会发生什么情况?
- 18. 如果打开失败会发生什么情况?
- 19. 如果php.ini丢失,会发生什么情况?
- 20. 如果超时,会发生什么情况?
- 21. 如果不使用Xmx会发生什么情况?
- 22. 如果MySQL数据库未关闭,会发生什么情况?
- 23. minimax:如果min不起作用会发生什么情况
- 24. 如果堆栈内存变满,会发生什么情况
- 25. 如果Web服务更改参数会发生什么情况?
- 26. 如果决策器未运行,会发生什么情况
- 27. 如果消息在MQ中回滚会发生什么情况?
- 28. 如果minSdkVersion低于targetSdkVersion,会发生什么情况?
- 29. 如果DTD链接无处可逃,会发生什么情况?
- 30. 如果我不指定targetFramework =“4.0”,会发生什么情况?