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?

Author: Termininja, 2009-05-26

10 answers

Les erreurs ne doivent pas être interceptées ou traitées (sauf dans les cas les plus rares). Les exceptions sont le pain et le beurre de la gestion des exceptions. Le Javadoc l'explique bien:

Une erreur est une sous-classe de Throwable qui indique des problèmes sérieux qu'un une application raisonnable ne devrait pas essayer d'attraper. La plupart de ces erreurs sont anormales condition.

Regardez quelques-unes des sous-classes de Error, en prenant certains de leurs JavaDoc commentaires:

  • AnnotationFormatError - Lancé lorsque l'analyseur d'annotation tente de lire une annotation à partir d'un fichier de classe et détermine que l'annotation est mal formée.
  • AssertionError - Lancé pour indiquer qu'une assertion a échoué.
  • LinkageError - Les sous-classes de LinkageError indiquent qu'une classe a une certaine dépendance vis-à-vis d'une autre classe; cependant, cette dernière classe a changé de manière incompatible après la compilation de la première classe.
  • VirtualMachineError - Lancé pour indiquer que le Java La machine virtuelle est en panne ou n'a plus les ressources nécessaires pour continuer à fonctionner.

Il y a vraiment trois sous-catégories importantes de Throwable:

  • Error - Quelque chose d'assez grave a mal tourné la plupart des applications devraient planter plutôt que d'essayer de gérer le problème,
  • Exception non cochée (aka RuntimeException) - Très souvent une erreur de programmation telle qu'un NullPointerException ou un argument illégal. Les applications peuvent parfois gérer ou récupérer à partir de ce Throwable catégorie category ou au moins l'attraper à la méthode run() du Thread, enregistrez la plainte et continuez à courir.
  • Exception vérifiée (aka Tout le reste) - Les applications devraient pouvoir attraper et faire quelque chose de manière significative avec le reste, comme FileNotFoundException et TimeoutException...
 146
Author: Eddie, 2009-05-26 20:01:14

Cette diapositive montrant la hiérarchie des exceptions de Java par @georgios-gousios explique de manière concise les différences entre les Erreurs et les Exceptions en Java.

Hiérarchie des exceptions Java

 24
Author: avandeursen, 2017-05-23 12:18:20

Les erreurs ont tendance à signaler la fin de votre application telle que vous la connaissez. Il ne peut généralement pas être récupéré et devrait entraîner la sortie de votre machine virtuelle. Les attraper ne doit pas être fait sauf pour éventuellement se connecter ou afficher et message approprié avant de quitter.

Exemple: OutOfMemoryError - Vous ne pouvez pas faire grand-chose car votre programme ne peut plus s'exécuter.

Les exceptions sont souvent récupérables et même si ce n'est pas le cas, elles signifient généralement qu'une tentative d'opération a échoué, mais votre programme peut encore sur.

Exemple: IllegalArgumentException - Transmis des données non valides à une méthode afin que l'appel de la méthode échoue, mais cela n'affecte pas les opérations futures.

Ce sont des exemples simplistes, et il existe une autre mine d'informations sur les seules exceptions.

 17
Author: Robin, 2009-05-26 19:52:45

Soleil met le mieux:

Une erreur est une sous-classe de Throwable cela indique de graves problèmes qu'un application raisonnable ne devrait pas essayer attraper.

 7
Author: Powerlord, 2009-05-26 19:48:18

Les Erreurs -

  1. Errors en java sont de type java.lang.Error.
  2. Toutes les erreurs en java sont de type non coché.
  3. Error s se produisent au moment de l'exécution. Ils ne seront pas connus du compilateur.
  4. Il est impossible de récupérer des erreurs.
  5. Error s sont principalement causés par l'environnement dans lequel l'application est en cours d'exécution.
  6. Exemples : java.lang.StackOverflowError, java.lang.OutOfMemoryError

Exceptions -

  1. Exceptions dans java sont de type java.lang.Exception.
  2. Exceptions incluent à la fois le type coché et le type non coché.
  3. Les exceptions vérifiées sont connues du compilateur alors que les exceptions non vérifiées ne sont pas connues du compilateur car elles se produisent au moment de l'exécution.
  4. Vous pouvez récupérer des exceptions en les gérant via des blocs try-catch.
  5. Exception s sont principalement causés par l'application elle-même.
  6. Exemples: Exceptions vérifiées : SQLException, IOException
    Exceptions non Cochées: ArrayIndexOutOfBoundException, ClassCastException, NullPointerException

Lecture supplémentaire: http://javaconceptoftheday.com/difference-between-error-vs-exception-in-java / http://javaconceptoftheday.com/wp-content/uploads/2015/04/ErrorVsException.png

 4
Author: roottraveller, 2017-09-15 06:19:09

La description de la classe Error est assez claire:

Un Error est une sous-classe de Throwable cela indique de graves problèmes qu'un application raisonnable ne devrait pas essayer attraper. La plupart de ces erreurs sont conditions anormales. Le ThreadDeath l'erreur, bien qu'une condition "normale", est aussi une sous-classe de Error parce que la plupart les applications ne devraient pas essayer d'attraper il.

Une méthode n'est pas requise pour déclarer dans sa clause jette toutes les sous-classes de Error cela pourrait être levées au cours de l' exécution de la méthode mais pas pris, puisque ces erreurs sont conditions anormales qui ne devraient jamais produire.

Cité de la propre documentation de Java 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 empêcher votre implémentation du serveur Web de planter si une servlet manque de mémoire ou quelque chose comme ça.)

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

 3
Author: Tobias Müller, 2009-05-26 19:50:02

Il existe plusieurs similitudes et différences entre les classes java.lang.Exception et java.lang.Error.

Similitudes:

  • Premièrement - les deux classes s'étendent java.lang.Throwable et par conséquent hérite de la plupart des méthodes qui sont courantes à utiliser lors de la négociation avec des erreurs comme: getMessage, getStackTrace, printStackTrace et ainsi de suite.

  • Deuxièmement, en tant que sous-classes de java.lang.Throwable, elles héritent toutes les deux propriétés suivantes:

    • Throwable lui-même et l'une de ses sous-classes (y compris java.lang.Error) peut être déclaré dans la liste des exceptions de méthode en utilisant le mot-clé throws. Une telle déclaration n'est requise que pour java.lang.Exception et les sous-classes, pour java.lang.Throwable, java.lang.Error et java.lang.RuntimeException et leurs sous-classes, il est facultatif.

    • Seulement java.lang.Throwable et les sous-classes peuvent être utilisés dans le catch clause.

    • Seulement java.lang.Throwable et les sous-classes peuvent être utilisés avec le mot - throw.

La conclusion de cette propriété est la suivante à la fois java.lang.Error et java.lang.Exception peut être déclaré dans l'en-tête de la méthode, peut être dans la clause catch, peut être utilisé avec le mot clé throw.

Différences:

  • Première différence conceptuelle: java.lang.Error, conçu pour être lancé par la JVM et indiquer de graves problèmes et destiné à arrêter exécution du programme au lieu d'être attrapé (mais il est possible que pour tout autre java.lang.Throwable successeur).

    Un passage de javadoc description à propos de java.lang.Error:

    ...indique de graves problèmes qu'une demande raisonnable devrait ne pas essayer de l'attraper.

    En face java.lang.Exception conçu pour représenter des erreurs qui attendu et peut être géré par un programmeur sans se terminer l'exécution du programme.

    Un passage de javadoc description à propos de java.lang.Exception:

    ...indique les conditions qu'une demande raisonnable pourrait vouloir attraper.

  • La deuxième différence entre les java.lang.Error et java.lang.Exception qui, d'abord considéré comme un non cochée exception pour la vérification des exceptions à la compilation. Comme le code de résultat jetant java.lang.Error ou ses sous-classes ne nécessitent pas de déclarer cette erreur dans l'en-tête de la méthode. Tout en lançant java.lang.Exception déclaration requise dans l'en-tête de la méthode.

Throwable et son diagramme de classe successeur (les propriétés et les méthodes sont omises). entrez la description de l'image ici

 2
Author: Mikhailov Valentine, 2016-05-04 14:59:32

OMI une erreur est quelque chose qui peut entraîner l'échec de votre application et ne doit pas être gérée. Une exception est quelque chose qui peut provoquer des résultats imprévisibles, mais qui peut être récupéré.

Exemple:

Si un programme est à court de mémoire, c'est une erreur car l'application ne peut pas continuer. Toutefois, si un programme accepte une entrée incorrecte, elle est une exception, car le programme peut gérer et de redirection de recevoir le type d'entrée.

 1
Author: Mr. Will, 2009-05-26 19:50:58

Voici un très bon résumé de Java API ce que représente une erreur et une exception:

Une erreur est une sous-classe de Throwable qui indique des problèmes graves qu'une application raisonnable ne devrait pas essayer d'attraper. La plupart de ces erreurs sont des conditions anormales. L'erreur ThreadDeath, bien qu'une condition "normale", est également une sous-classe d'erreur car la plupart des applications ne devraient pas essayer de l'attraper.

Une méthode n'est pas requise pour déclarer dans sa clause jette toutes les sous-classes de Erreur qui pourrait être lancée pendant le exécution de la méthode mais pas pris, puisque ces erreurs sont conditions anormales qui ne devraient jamais produire.

OTOH, pour les exceptions, l'API Java dit:

L'exception de classe et ses sous-classes sont une forme de Throwable qui indique les conditions qu'une application raisonnable pourrait vouloir attraper.

 0
Author: egaga, 2009-05-26 19:50:29

Erreurs sont principalement causés par l'environnement dans lequel l'application est en cours d'exécution. Par exemple, OutOfMemoryError se produit lorsque la JVM manque de mémoire ou StackOverflowError se produit lorsque la pile déborde.

Les exceptions sont principalement causées par l'application elle-même. Par exemple, NullPointerException se produit lorsqu'une application tente d'accéder à un objet null ou ClassCastException se produit lorsqu'une application tente de convertir des types de classes incompatibles.

Source: Différence Entre Erreur Vs Exception dans Java

 0
Author: user2485429, 2015-04-27 14:10:28