假設寫操作中途拋出異常,是否有任何數據寫入文件,或者文件中沒有寫入數據?如果CFile :: Write引發異常會發生什麼情況?
1
A
回答
0
簡短回答:很可能有些數據會寫入文件,除非在寫入操作開始時磁盤已滿。
較長的答案:它將取決於Write調用拋出的CFileException。
http://msdn.microsoft.com/en-us/library/as5cs056(VS.80).aspx
0
既然你沒有的CFile的內部的視圖(或不應該,如果它的正確封裝的),你需要依靠API的「契約」上。換句話說,除非文件明確告訴你在某些情況下會發生什麼,否則你不能依賴它。
即使您有源代碼並且可以弄清楚,API規範是合同,任何未指定的內容都可以隨時更改。這就是爲什麼一些軟件開發人員對發佈內部結構非常謹慎的原因之一,因爲它可以被視爲永遠支持它們。
如果您確實想確保文件在異常後處於已知狀態,則需要對該行爲進行編碼。這可以是這樣的:
- 在程序啓動時備份文件(簡單);或
- 在每次保存操作前備份它(仍然比較簡單);或
- 在進行任何寫入操作(複雜和緩慢)之前進行備份。
相關問題
- 1. 如果finally塊引發異常,會發生什麼情況?
- 2. 如果我的IExceptionPublisher引發異常,會發生什麼情況?
- 3. 如果在Application_Start中引發未處理的異常,會發生什麼情況?
- 4. 如果java flyway移植引發異常,會發生什麼情況?
- 5. 如果未捕獲到異常,會發生什麼情況?
- 6. 如果任何異常情況發生
- 7. 如果發生異常,Laravel DB Transaction會發生什麼?
- 8. DatastoreService批量刪除。如果發生異常,會發生什麼
- 9. 如果iOS分發證書過期會發生什麼情況?
- 10. 在Data.Pool中,如果創建新資源的操作引發異常,會發生什麼情況?
- 11. 如果一個篩選器在servlet中引發異常,會發生什麼情況?
- 12. 發生病情時會發生什麼情況?
- 13. 如果在初始化靜態局部變量之前發生異常,會發生什麼情況?
- 14. 爲什麼會發生這種情況?
- 15. 當使用try資源打開資源時會發生什麼情況會引發異常?
- 16. 在Java中,評估構造函數調用的參數時會發生什麼情況會引發異常?
- 17. 如果未處理事件會發生什麼情況?
- 18. 如果有人拿到我的appsecret,會發生什麼情況?
- 19. 如果php.ini丟失,會發生什麼情況?
- 20. minimax:如果min不起作用會發生什麼情況
- 21. 如果您打破Lock()語句,會發生什麼情況?
- 22. 如果NSURLCache已滿,會發生什麼情況?
- 23. 如果委託不存在,會發生什麼情況?
- 24. 如果我不調用transaction.close或transaction.rollback,會發生什麼情況?
- 25. 如果Web服務更改參數會發生什麼情況?
- 26. 如果ExecutorService的隊列已滿,會發生什麼情況
- 27. 如果MySQL數據庫未關閉,會發生什麼情況?
- 28. 如果minSdkVersion低於targetSdkVersion,會發生什麼情況?
- 29. 如果CImage :: Load方法失敗會發生什麼情況?
- 30. 如果超時,會發生什麼情況?