Maison >développement back-end >C++ >Les spécificateurs d'exception sont-ils toujours pertinents en C moderne ?

Les spécificateurs d'exception sont-ils toujours pertinents en C moderne ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 03:47:02835parcourir

Are Exception Specifiers Still Relevant in Modern C  ?

Dois-je incorporer des spécificateurs d'exception en C ?

Les spécificateurs d'exception en C permettent aux fonctions d'indiquer si elles peuvent lever des exceptions, telles que :

<code class="cpp">void foo() throw(); // guaranteed not to throw an exception
void bar() throw(int); // may throw an exception of type int
void baz() throw(...); // may throw an exception of some unspecified type</code>

Bien que ces spécificateurs puissent transmettre une intention, leur utilisation pratique est discutable en raison de plusieurs facteurs :

Limitations de l'application

Les compilateurs n'appliquent pas strictement les spécificateurs d'exception, ce qui réduit leur efficacité. Le comportement idéal impliquerait des erreurs de compilation en cas de violation des spécifications, mais cela n'est pas garanti.

Punition sévère en cas de violations

Si une fonction viole un spécificateur d'exception, le comportement standard est pour terminer le programme. Cette réponse sévère peut ne pas être souhaitable dans tous les cas.

Traitement incohérent dans les environnements de développement

Certains environnements de développement, tels que VS.Net, traitent throw(X) comme throw(...), compromettant le respect de la norme.

Arguments contre l'exception Spécificateurs

En plus des préoccupations ci-dessus, plusieurs arguments plaident contre l'utilisation de spécificateurs d'exception :

  • Compatibilité avec les modèles : Les spécifications d'exception peuvent gêner le développement de code modèle en raison de comportements d'exception imprévisibles.
  • Interdiction de Extensibilité : La spécification des exceptions attendues peut limiter l'évolution du code au fil du temps.
  • Compatibilité avec le code hérité : Le traitement du code hérité rend difficile la prévision d'exceptions possibles, conduisant potentiellement à un programme résiliation.
  • Concentrez-vous sur la gestion des erreurs : L'accent doit être mis sur le renvoi des erreurs courantes et la réservation d'exceptions pour scénarios exceptionnels.

Quand les spécificateurs d'exception peuvent être utiles

Malgré la recommandation générale contre l'utilisation de spécificateurs d'exception, ils peuvent toujours être bénéfiques lorsque :

  • Une bibliothèque ne génère que ses propres exceptions, ce qui permet une spécification claire de l'intention. Cependant, ce cas d’usage est rare en pratique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn