Utiliser les exceptions jetant en C #. Cela affecte-t-il une performance?

En gros, la question est la suivante: les exceptions en C # affectent-elles beaucoup la performance? Est-il préférable d’éviter de renvoyer Exceptions? Si je génère une exception dans mon code, cela affecte-t-il une performance?

Désolé pour les sillines de la question elle-même

Les directives de conception de Microsoft pour le développement de bibliothèques de classes constituent une ressource très précieuse. Voici un article pertinent:

Exceptions et performances

Je recommanderais également le livre Framework Design Guidelines de Microsoft Press. Il contient beaucoup d’informations contenues dans le lien Design Guidelines, mais il est annoté par les personnes atteintes de SP et par Anders Hejlsberg lui-même. Cela donne beaucoup d’informations sur le “pourquoi” et le “comment” de la façon dont les choses sont.

Si vous vous inquiétez des performances des exceptions, vous les utilisez mal.

Mais oui, les exceptions affectent les performances.

Relever une exception est une opération coûteuse en C # (comparée à d’autres opérations en C #), mais cela ne suffit pas pour éviter de le faire.

Je suis d’accord avec Jared, si votre application est nettement plus lente en raison des exceptions levées et levées, je jetterais un coup d’œil à votre stratégie globale. Quelque chose peut probablement être remanié pour rendre la gestion des exceptions plus efficace au lieu de rejeter le concept de génération d’exceptions dans le code.

L’exécution de code via une instruction try / catch n’a aucune incidence sur les performances. Le seul impact sur les performances survient si une exception est levée … car le moteur d’exécution doit alors dérouler la stack et rassembler d’autres informations afin de renseigner l’object exception.

Ce que la plupart des gens ont dit, plus: N’utilisez pas d’exceptions dans le cadre du processus de programmation. En d’autres termes, ne lancez pas d’exception pour quelque chose comme, account.withdrawalAmount > account.balance . C’est une parsing de rentabilisation.

L’autre point à surveiller en ce qui concerne les performances consiste à avaler des exceptions. C’est une pente glissante, et une fois que vous permettez à votre application d’avaler des exceptions, vous commencez à le faire partout. Vous pouvez maintenant autoriser votre application à générer des exceptions que vous ignorez car vous les avalez, votre performance en souffre et vous ne savez pas pourquoi.

Ce n’est pas idiot, je l’ai juste vu ailleurs aussi sur SO.

Les exceptions se produisent bien lorsque les choses sont vraiment exceptionnelles. La plupart du temps, vous relancez l’exception (éventuellement après la journalisation) lorsqu’il n’y a pas beaucoup de chances de la récupérer. Cela ne devrait donc pas vous gêner pour le déroulement normal du programme.

Les exceptions comme son nom l’indique sont censées être exceptionnelles. Par conséquent, vous ne pouvez pas vous attendre à ce qu’ils aient été une cible importante pour l’optimisation. Plus souvent qu’autrement, ils ne fonctionnent pas bien car ils ont d’autres priorités, telles que la collecte d’informations détaillées sur ce qui n’a pas fonctionné.

Les exceptions dans .NET affectent les performances. C’est la raison pour laquelle ils ne devraient être utilisés que dans des cas exceptionnels .