192 votes

Différences entre Exception et erreur

J’essaie d’en savoir plus sur Java de base et les différents types de Throwables, quelqu'un peut-il me faire connaître les différences entre les Exceptions et les erreurs ?

189voto

Eddie Points 27755

Les erreurs ne doivent pas être pris ou traitées (sauf dans de très rares cas). Les Exceptions sont le pain et le beurre de la gestion des exceptions. La Javadoc , l'explique bien:

Une Erreur est une sous-classe de Throwable qui indique des problèmes graves qu'un application raisonnable ne devrait pas essayer de l'attraper. La plupart de ces erreurs sont anormaux conditions.

Regardez quelques-uns des sous-classes de Error, la prise de certains de leurs commentaires JavaDoc:

  • AnnotationFormatError - Levée lors de l'annotation de l'analyseur tente de lire une annotation à partir d'un fichier de classe et détermine que l'annotation est mal formé.
  • AssertionError - Jeté pour indiquer qu'une affirmation a échoué.
  • LinkageError - Les sous-classes de LinkageError indiquer qu'une classe a une certaine dépendance à une autre classe; toutefois, le dernier de la classe a incompatibilité changé après la compilation de la première classe.
  • VirtualMachineError - Jeté pour indiquer que la Machine Virtuelle Java est cassé ou a épuisé toutes les ressources nécessaires à la poursuite de l'exploitation.

Il y a vraiment trois grandes sous-catégories de l' Throwable:

  • Error - Quelque chose d'assez grave qui a mal tourné la plupart des applications crash plutôt que d'essayer de traiter le problème,
  • Décochée Exception (aka RuntimeException) - Très souvent une erreur de programmation comme un NullPointerException ou un argument illégal. Les Applications peuvent parfois gérer ou à récupérer de cette Throwable catégorie -- ou au moins l'attraper au Fil de l' run() méthode, journal de la plainte, et de continuer à fonctionner.
  • Vérifié Exception (aka Tout le reste) - le nombre de Demandes devrait être capable d'attraper et de véritablement faire quelque chose avec le reste, comme FileNotFoundException et TimeoutException...

18voto

Robin Points 15032

Les erreurs ont tendance à signaler la fin de votre application comme vous le savez. Elle ne peut généralement pas être récupérés à partir de et cause de votre VM à la sortie. Leur capture ne doit pas être fait à l'exception, éventuellement, de journal ou d'affichage et le message approprié avant de quitter.

Exemple: OutOfMemoryError - Pas beaucoup que vous pouvez faire en tant que votre programme ne peut plus être exécuté.

Les Exceptions sont souvent l'objet d'un remboursement et même lorsqu'il n'est pas, généralement, ils ont juste dire une opération tentative a échoué, mais que votre programme peut encore porter.

Exemple: IllegalArgumentException - Transmis des données non valides pour une méthode de sorte que l'appel de la méthode a échoué, mais elle n'affecte pas les opérations futures.

Ce sont simplistes exemples, et il y a une autre richesse de l'information sur les Exceptions seul.

9voto

Powerlord Points 43989

Sun met les meilleures:

Une erreur est une sous-classe de Throwable qui indique une application raisonnable ne devrait pas essayer d’attraper des problèmes sérieux.

4voto

Tobias Müller Points 188

La description de l' Error classe est tout à fait clair:

Un Error est une sous-classe de Throwable qui indique des problèmes graves qu'un application raisonnable ne devrait pas essayer pour les attraper. La plupart de ces erreurs sont conditions anormales. L' ThreadDeath erreur, si un "normal", est également une sous-classe de Error parce que la plupart des les applications ne devraient pas essayer de l'attraper c'.

Une méthode n'est pas tenu de déclarer, dans ses lancers clause de toutes les sous-classes de Error qui peut être levée au cours de l' l'exécution de la méthode, mais pas pris, depuis que ces erreurs sont conditions anormales qui ne devrait jamais se produire.

Cité de Java est propre documentation de la classe Error.

En bref, vous ne devriez pas attraper Errors, sauf si vous avez une bonne raison de le faire. (Par exemple pour éviter que votre mise en œuvre du serveur web de crash si un servlet est à court de mémoire ou quelque chose comme ça).

Un Exception, d'autre part, est juste un type normal exception, comme dans toute autre langue moderne. Vous trouverez une description détaillée dans la documentation de l'API Java ou en ligne et hors ligne des ressources.

1voto

Alex Points 2858

Deux types d'erreurs: les erreurs d'Exécution et le temps de compilation. Les erreurs sont irrecevables les exceptions. Dans le cas d'erreur de compilation, le compilateur java (javac) sera un échec, et la compilation se termine. Dans le cas d'une erreur d'exécution, un programme mettra fin à l'exécution. Une exception, d'autre part, est une situation négative (erreur) géré par le code, mais ce n'est pas souhaitée. Cette "renvoie une erreur", ce qui peut être gérée par le programmeur dans le "catch".

Un exemple est l'écriture sur un disque. Parfois, le programme est dans l'impossibilité d'accéder au disque, d'autorisations, de blocage, ect. C'est une erreur courante, alors une exception est levée et géré par le java, le programmeur peut alors gérer et répondre aux sans s'écraser son programme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X