Exception contre erreur
Un comportement inattendu est lié à l'exécution d'un programme. Cela peut être dû à des exceptions ou à des erreurs. Les exceptions sont des événements qui peuvent perturber le déroulement normal du programme. Les erreurs sont des conditions qui peuvent être considérées comme irrécupérables. Les exceptions sont principalement liées à l'application elle-même, tandis que les erreurs sont liées au système sur lequel le programme s'exécute.
Qu'est-ce qu'une exception ?
Exception est un événement qui peut perturber le déroulement normal du programme. Le nom exception vient de « événement exceptionnel ». La levée d'une exception est le processus de création d'un objet d'exception et de sa transmission au système d'exécution. L'objet d'exception est créé par la méthode dans laquelle l'exception s'est produite. L'objet Exception contient des informations utiles telles que le type et la description de l'exception. Lorsque le système d'exécution reçoit l'objet exception, il essaie de trouver quelqu'un pour le gérer dans la pile des appels en le parcourant dans l'ordre inverse (dans lequel les méthodes ont été appelées). La pile d'appels est la liste ordonnée des méthodes, qui ont été appelées avant la méthode dans laquelle l'exception s'est produite. Le système d'exécution réussit s'il trouve une méthode avec un gestionnaire d'exceptions. Le gestionnaire d'exceptions est un bloc de code qui peut officiellement gérer ladite exception. Si le système d'exécution trouve un gestionnaire approprié (c'est-à-dire que le type d'exception correspond au type qui peut être géré), il transmettra l'objet d'exception au gestionnaire. C'est ce qu'on appelle attraper l'exception. Cependant, si l'exception ne peut pas être gérée, le programme se terminera. En Java, les exceptions héritent de la "classe jetable". NullPointerException et ArrayIndexOutOfBoundsException sont deux exceptions courantes en Java.
Qu'est-ce qu'une erreur ?
Une erreur est une condition qui peut être considérée comme irrécupérable, comme le programme nécessitant une quantité de mémoire supérieure à ce qui est disponible. Ces erreurs ne peuvent pas être gérées lors de l'exécution. Si une erreur se produit, le programme se terminera. En Java, les erreurs héritent de la classe Throwable. Les erreurs représentent généralement des problèmes graves que le programmeur (ou l'application) ne doit pas essayer de détecter. Les erreurs sont simplement des conditions anormales, qui ne devraient jamais se produire dans des circonstances normales, et donc jamais prévues. Par exemple, OutOfMemoryError, StackOverflowError et ThreadDead sont de telles erreurs. Les méthodes ne doivent jamais avoir de gestionnaires pour les erreurs.
Quelle est la différence entre Exception et Erreur ?
Les erreurs et les exceptions sont des occurrences indésirables lors de l'exécution d'un programme. Cependant, ils présentent des différences essentielles. Des exceptions peuvent être prévues par le programmeur, tandis qu'une erreur est difficile à prévoir. Les exceptions peuvent être cochées ou décochées. Mais les erreurs sont toujours décochées. Les exceptions indiquent généralement une erreur causée par le programmeur. Cependant, des erreurs se produisent en raison d'une erreur système ou d'une utilisation inappropriée d'une ressource. Par conséquent, les exceptions doivent être gérées au niveau de l'application, tandis que les erreurs doivent être prises en charge au niveau du système (uniquement si possible). Après avoir traité une exception, vous êtes assuré de revenir au déroulement normal du programme. Mais même si une erreur est détectée, le programmeur peut ne pas savoir comment la gérer en premier lieu. Contrairement à la gestion traditionnelle des erreurs, les exceptions permettent de séparer le code de gestion des erreurs du code normal.