Si nous appelons les exceptions des bogues, pourquoi ne pas simplement l'appeler un bogue en premier lieu au lieu d'une exception?
Si dans le code, il est appelé exception et dès qu'il se produit, il est appelé bogue. Alors pourquoi ne pas l'appeler un bug en premier lieu?
Merci pour toute réponse ou commentaire.
Réponses:
Eh bien, c'est assez simple: toutes les exceptions ne sont pas des bogues (et de même, tous les bogues ne se manifestent pas comme des exceptions).
Comme exemple d'une exception qui n'est pas un bug, si vous lisez un fichier à partir d'un lecteur USB et que quelqu'un arrache le lecteur du socket. Cela va déclencher une exception (dans la plupart des langues qui prennent en charge les exceptions, c'est-à-dire). Mais ce n'est pas un bug dans le code.
Inversement, un bogue peut se manifester comme une erreur de calcul ou quelque chose. Vous obtenez toujours une réponse, ce n'est tout simplement pas la bonne.
Cela dit, une exception qui fait son chemin jusqu'au sommet de la pile est probablement un bug. Dans mon exemple USB ci-dessus, vous devriez pouvoir intercepter cette exception et présenter une belle erreur à l'utilisateur disant "Nous n'avons pas pu lire le fichier car il n'est plus connecté." ou quelque chose. Si vous leur présentez simplement un
IOException
code d'erreur génial, c'est un bug. Mais l'exception elle-même ne l'est pas.la source
Clair et simple, une exception n'est pas (toujours) un bug!
Une exception est levée (ou devrait l'être) lorsque quelque chose d'exceptionnel se produit. S'il y a un problème avec mon disque dur et qu'un fichier ne peut pas être écrit, ce n'est pas un bug. C'est une défaillance du matériel.
Un bug est généralement le résultat d'une mauvaise programmation. Si une application fait quelque chose qui n'est pas attendu à la suite d'une erreur de programmation, c'est un bogue.
la source
Ce n'est pas la même chose.
Un bug est un comportement involontaire d'un logiciel: le logiciel ne fait pas ce qu'il est censé faire. Les bogues peuvent survivre à tous les niveaux de développement logiciel, allant de simples fautes de frappe à des erreurs logiques à des spécifications fonctionnelles inadéquates.
Une exception , en revanche, peut se référer à une condition inhabituelle d'un programme, s'écartant du fonctionnement normal, ou, plus spécifiquement, à la construction du langage utilisée pour signaler et gérer de telles conditions.
Le fait qu'une exception se produise peut être le signe d'un bug, mais ce n'est souvent pas le cas. Par exemple, une application qui est censée télécharger un document à partir d'une URL et le traiter localement peut lever une exception lorsque le serveur distant est en panne: l'application s'écarte du fonctionnement normal (elle ne peut pas télécharger et traiter le document), mais si elle gère correctement l'exception et récupère, il n'y a donc pas de bogue.
Inversement, la présence d'un bogue ne se manifeste pas nécessairement comme une exception. Une application peut ignorer silencieusement les données que vous saisissez au lieu de les stocker dans sa base de données; aucune exception n'est levée, mais c'est toujours un bug.
la source
Les exceptions et les bogues ne sont pas du tout liés. Bien sûr, parfois vous lancez une exception et cela signifie un bug. Mais parfois, cela signifie simplement une circonstance exceptionnelle et inhabituelle, qui n'est pas nécessairement un bug dans le programme. Surtout dans un langage d'exception comme Java, où chaque opération standard et son chien lève environ cinq exceptions différentes - par exemple, l'ouverture du fichier a échoué, la lecture du fichier a échoué, etc.
la source
Les exceptions ne sont pas toujours liées aux bogues. Considérez-le comme quelque chose qui pourrait mal tourner avec ce que vous faites.
Un exemple qui me vient à l'esprit est InetAddress.getByName () qui est utilisé pour résoudre un nom de domaine. Si quelque chose se produit et qu'une UnknownHostException est levée, ce n'est pas vraiment un problème de code.
la source
Un bogue logiciel est le terme commun utilisé pour décrire une erreur, une faille, une erreur, une panne ou une défaillance dans un programme ou un système informatique qui produit un résultat incorrect ou inattendu, ou fait en sorte qu'il se comporte de manière involontaire. Cela pourrait même être une faute d'orthographe sur une étiquette.
Les exceptions sont différentes des bogues. Chaque type d'exception (violation d'accès, débordement de pile, etc.) peut être déclenché sur un débogueur en tant qu'exception de «première chance» ou de «seconde chance». Les exceptions de première chance sont, par définition, non fatales à moins qu'elles ne soient pas gérées correctement avec un gestionnaire d'erreurs, auquel cas elles sont à nouveau levées en tant qu'exception de seconde chance (que seul un débogueur peut gérer).
Si aucun débogueur ne gère une exception de seconde chance, l'application est fermée.
la source
Vous pourriez légitimement soulever une exception vous-même, nous espérons que vous n'introduirez jamais un bogue exprès.
la source
Toutes les exceptions ne sont pas des bogues. Il peut être un sujet de débat que tous les bogues soient des exceptions ou non.
Nous pouvons dire que les exceptions sont les événements qui ne font pas partie du flux d'application normal ou attendu. Ces événements peuvent être indépendants de la façon dont le code est écrit alors qu'un bogue est essentiellement le résultat d'un mauvais code (comme un mauvais calcul).
Voici un exemple de la façon dont ne pas gérer une exception peut être un bogue.
Supposons qu'il existe un programme qui écrit des données sur un périphérique de stockage externe. Lors de l'écriture, le périphérique de stockage externe a été débranché, s'est écrasé ou peut être détruit (pour une raison quelconque). Maintenant, c'est un cas exceptionnel, maintenant que le langage de programmation supporte une gestion exceptionnelle ou non si le programme plante ou se conduit mal à cause de cet événement, c'est un bug. (L'utilisateur final peut ne pas avoir idée de ce qui s'est passé. Il est également très désagréable) . Mais si le programme abandonne le processus gracieusement, informez l'utilisateur (en d'autres termes, gérez l'exception), ce n'est clairement pas un bogue.
Les langages de programmation try catch machanism fournissent est essentiellement un outil pour faciliter notre sortie pour gérer les événements inattendus.
la source
Synopsis : Les exceptions sont la preuve de mauvais résultats, les bogues sont (certaines des) causes de mauvais résultats. Le problème (à résoudre) n'est pas l'exception, c'est le problème qui a provoqué l'exception.
Resoning: Un bug est un défaut dans la conception ou l'implémentation d'un produit (non limité au logiciel). Par exemple, ne pas utiliser un relais correctement évalué (temps / sensibilité / fiabilité / capacité) en raison de spécifications incorrectes ou d'une simple erreur de construction. Une exception est une déviation du monde réel / durée de fonctionnement par rapport au comportement prévu (oserais-je dire «attendu»?), Par exemple, la perte de contrôle d'un véhicule pendant la conduite.
De toute évidence, un bogue peut provoquer une exception car l'exemple en 1) pourrait conduire à l'exemple en 2). Mais toutes les exceptions ne seraient pas causées par des bogues, par exemple, la perte de contrôle d'un véhicule en raison d'un accident vasculaire cérébral.
la source
Étant donné que cette question a été rouverte pour une prime, permettez-moi de mentionner mon article CUJ de 2003 intitulé "Une exception ou un bug?", Qui semble répondre exactement à la question du PO.
Fondamentalement, l'article définit les termes «bogue» et «exception» (en donnant des exemples) et propose des stratégies pour traiter chacun d'eux.
L'article propose de ne pas «gérer» les bogues mais plutôt de les signaler avec des assertions. En revanche, les vraies exceptions nécessitent une gestion par le biais du code (éventuellement lever / intercepter des exceptions).
Le point principal est que les bogues nécessitent la stratégie opposée exacte aux exceptions.
L'article susmentionné est maintenant disponible chez Dr.Dobb's à: http://www.drdobbs.com/an-exception-or-a-bug/184401686
la source