Supposons que l'opération d'écriture lève une exception à mi-chemin, y a-t-il des données écrites dans le fichier ou aucune donnée n'est écrite dans le fichier?Que s'est-il passé si CFile :: Write lève une exception?
Répondre
Réponse courte: Il est probable que certaines données seront écrites dans le fichier, sauf si le disque est plein au début de l'opération d'écriture. Réponse plus longue: Cela dépendra de ce que CFileException est lancé à partir de l'appel en écriture.
http://msdn.microsoft.com/en-us/library/as5cs056(VS.80).aspx
Puisque vous avez pas de vue sur les entrailles de CFile (ou ne devrait pas, si elle est encapsulé correctement), vous devez compter sur le « contrat » de l'API. En d'autres termes, à moins que la documentation ne vous dise spécifiquement ce qui se passe dans certains cas, vous ne pouvez pas vous y fier.
Même si vous aviez le code source et que vous pouviez le comprendre, la spécification API est le contrat et tout ce qui n'y est pas spécifié peut être modifié à tout moment. C'est l'une des raisons pour lesquelles certains développeurs de logiciels se méfient de la publication d'informations internes, alors que l'on peut voir qu'ils les verrouillent pour les soutenir indéfiniment.
Si vous voulez vraiment vous assurer que votre fichier sera dans un état connu après l'exception, vous devrez coder autour du comportement. Cela peut être quelque chose comme:
- sauvegarder le fichier au démarrage du programme (simple); ou
- sauvegarde avant chaque opération de sauvegarde (encore relativement simple); ou
- sauvegarde avant toute opération d'écriture (complexe et lente).
- 1. Pourquoi OdbcCommand.ExecuteScalar() lève une exception AccessViolationException?
- 2. connexion Oracle 11g lève une exception mystérieuse
- 3. Pourquoi EventInfo.RemoveEventHandler lève une exception NullReferenceException?
- 4. Pourquoi le formateur WCF lève une exception?
- 5. getClass(). GetClassLoader(). GetResourceAsStream lève une exception NullPointerException
- 6. Question sur CFile Seek
- 7. Comment est-ce que j'échoue automatiquement une construction nant si la requête NDepend lève un avertissement
- 8. Problème: Obtenir une taille de l'unité mobile en utilisant C# lève une exception - Commentés
- 9. Le service lève une exception lors de la tentative d'appel d'une bibliothèque COM
- 10. XPathNavigator.SetValue Lève NotSupportedException
- 11. FORTRAN WRITE()
- 12. La méthode FindControl() lève ArithmeticException?
- 13. INotifyPropertyChanging et validations: quand est-ce que je lève PropertyChanging?
- 14. Python File Read + Write
- 15. Déterminer si un paramètre nommé a été passé
- 16. Est-ce que Rijndael lance toujours une exception si le mot de passe n'est pas correct?
- 17. Est-ce que ExpectedExceptionAttribute de NUnit seulement moyen de tester si quelque chose soulève une exception?
- 18. write java wrapper
- 19. problème avec IHTMLDocument2 :: write()
- 20. VB.NET Write rendements #ERROR 448 #
- 21. spring mvc: détecter si une exception a été levée lors du chargement du contexte
- 22. Ghostscript PDF -> TIFF lève une exception non supprimable, lors de la consommation de fichiers avec des polices asiatiques
- 23. Comment puis-je vérifier si l'utilisateur a passé une date valide en javascript?
- 24. SQL server write once column
- 25. Est-ce que ma méthode devrait lancer une exception?
- 26. Déterminer les propriétés à sérialiser dans une classe qui est passé au-dessus d'un webservice
- 27. Exception si Log4net n'est pas configuré correctement
- 28. Comment est-ce que je décris une méthode qui n'a aucun effet secondaire si une exception est levée pendant l'exécution?
- 29. InkAnalyzer lève FileNotFoundException sur le déploiement Vista
- 30. BackgroundWorker OnWorkCompleted lève l'exception de thread-thread