Je ne me souviens tout simplement pas de la terminologie utilisée pour cette propriété et d'autres propriétés connexes. EDIT - Peut-être qu'un tel concept n'existe pas mais je me souviens avoir lu quelque chose dans Effective C++ (ou C++ plus efficace) où il préconisait d'utiliser swaps pour valider les changements dans la fonction car les fonctions de swap vectoriel étaient garanties. une exception.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?
Répondre
Je pense que vous voulez dire que la fonction est "exception-safe". Voir par exemple http://en.wikipedia.org/wiki/Exception_safety.
L'article de Wikipédia divise encore la sécurité en plusieurs niveaux. C'est celui qui est pertinent ici:
2. COMMIT ou sémantique rollback, également connu sous forte sécurité d'exception ou sans changement de garantie: Les opérations peuvent échouer, mais les opérations ont échoué sont garantis d'avoir si tous les pas d'effets secondaires les données conservent les valeurs d'origine.
Il y a une référence à un document de conception STL qui introduit la sécurité d'exception et la sémantique commettre ou-rollback: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.asc
Vous pourriez penser d'un exception guarantee, en particulier la « forte garantie ».
Après avoir lu votre montage, je soupçonne que votre titre est légèrement incorrect. Voulez-vous vraiment dire qu'il n'a aucun effet secondaire ou si une exception est levée (selon le libellé actuel) ou qu'il n'a pas d'effets secondaires lorsqu'une exception est levée, mais si la méthode se termine sans lancer une exception, il sera/peut avoir des effets secondaires? Il y a une très grande différence :)
Ce dernier est décrit dans Accelerated C# 2008 comme "neutralité d'exception".
- 1. Comment puis-je tester une exception qui n'est levée que lorsque le chemin d'accès du système est incorrect?
- 2. Java - Une exception doit être levée, mais comment?
- 3. Le HttpContext.Current est-il éliminé même si une exception est levée?
- 4. avertissement C4552: '<=': l'opérateur n'a aucun effet; opérateur attendu avec effet secondaire (Programmation C)
- 5. Comment puis-je voir les types par lesquels une exception InvalidCastException est levée en C#?
- 6. Est-ce que ma méthode devrait lancer une exception?
- 7. spring mvc: détecter si une exception a été levée lors du chargement du contexte
- 8. Comment appeler une méthode qui est une valeur de hachage?
- 9. Est-ce que ExpectedExceptionAttribute de NUnit seulement moyen de tester si quelque chose soulève une exception?
- 10. Est-ce que Rijndael lance toujours une exception si le mot de passe n'est pas correct?
- 11. Pourquoi une exception est-elle levée depuis Spring.NET lors de l'appel de ContextRegistry.GetContext()?
- 12. programme d'interruption dans le débogueur lorsque C++ exception est levée
- 13. Aucun effet de réordonnancement des sous-couches
- 14. Que s'est-il passé si CFile :: Write lève une exception?
- 15. Rhino Mocks - Définit une propriété si une méthode est appelée
- 16. Comment vérifier si une exception personnalisée est déclenchée dans une application Ruby?
- 17. Une méthode de classe qui se comporte différemment lorsqu'elle est appelée en tant que méthode d'instance?
- 18. Comment puis-je créer une extension pour BlogEngine.net qui accède si une publication est dans une certaine catégorie?
- 19. Une exception est rencontrée java.lang.UNIXProcess.forkAndExec
- 20. Pourquoi est-ce que je reçois une exception IllegalArgumentException avec ce code pour créer une image?
- 21. Comment vérifier si une méthode python est liée ou non?
- 22. Refactorisation d'une méthode qui appelle d'autres méthodes qui lancent Exception
- 23. Comment est-ce que je me moque de la méthode Python OptionParser.error(), qui fait un sys.exit()?
- 24. Pourquoi une exception ClassCastException est-elle levée uniquement lorsque vous accédez à la valeur de retour?
- 25. Comment voir où une exception est interceptée?
- 26. Si aucun argument n'est fourni dans la fonction, comment puis-je tester si elle est vide?
- 27. Modification de .Interior.ColorIndex n'a aucun effet
- 28. Mono: MONO_THEME n'a aucun effet sous Ubuntu?
- 29. Si je m'inscris à un événement dans C# pendant qu'il est en expédition, est-ce que je suis sûr de ne plus être appelé pendant cette expédition?
- 30. Comment puis-je détecter si Dispatcher.DisableProcessing est actif?
Oui, merci. Ce sont ces différents niveaux de sécurité d'exception que je cherchais. Peut-être pourriez-vous les ajouter à votre réponse? – tpower
Je ne voulais pas tout copier, donc je viens de citer celui qui est le plus pertinent ici. Est-ce que ça a l'air ok? –