Question

Je suis en train d'en savoir plus sur Java de base et les différents types de Throwables, quelqu'un peut me faire savoir les différences entre les exceptions et erreurs?

Était-ce utile?

La solution

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

  

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

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

  • AnnotationFormatError - Renvoyé lorsque l'analyseur d'annotation tente de lire une annotation à partir d'un fichier de classe et détermine que l'annotation est malformé
  • .
  • AssertionError - Renvoyé pour indiquer qu'une assertion a échoué
  • .
  • LinkageError - de LinkageError indiquent Sous-classes qu'une classe a une certaine dépendance à une autre classe; Cependant, cette dernière classe a changé après la façon incompatible compilation de l'ancienne classe.
  • VirtualMachineError - Renvoyé pour indiquer que la machine virtuelle Java est cassé ou est à court de ressources nécessaires pour lui permettre de continuer à fonctionner.

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

  • Error - Quelque chose assez grave a mal tourné la plupart des applications devraient planter plutôt que d'essayer de traiter le problème,
  • Exception non contrôlé (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 catégorie Throwable -. Ou au moins l'attraper à la méthode de run() du fil, connectez-vous la plainte, et continuer à exécuter
  • Exception Vérifié (alias Tout le reste) - Les demandes devraient être en mesure d'attraper et de faire quelque chose de manière significative avec le reste, comme FileNotFoundException et TimeoutException ...

Autres conseils

par @ georgios-gousios explique de manière concise les différences entre les erreurs et exceptions en Java.

 Java Exception Hiérarchie

Les erreurs ont tendance à signaler la fin de votre application comme vous le savez. Il ne peut généralement être récupéré à partir et devrait entraîner votre VM pour quitter. Attrapez-les ne devraient pas se faire, sauf pour éventuellement ouvrir une session ou affichage et message approprié avant de quitter.

Exemple: OutOfMemoryError -. Pas grand-chose que vous pouvez faire en tant que votre programme ne peut fonctionner plus

Les exceptions sont souvent récupérables et même lorsqu'ils ne sont pas, ils signifient généralement juste une opération de tentative a échoué, mais votre programme peut encore continuer.

Exemple: IllegalArgumentException -. Passed des données non valides à une méthode de sorte que l'appel de méthode a échoué, mais elle n'a aucune incidence sur les opérations futures

Ce sont des exemples simplistes, et il y a une autre mine d'informations sur les exceptions légitimes seulement.

met le mieux :

  

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

Erreurs -

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

Exceptions -

  1. Exceptions en java sont de type java.lang.Exception.
  2. Exceptions comprennent à la fois vérifié ainsi que le type sans contrôle.
  3. exceptions cochés sont connues compilateur où comme exceptions non vérifiées ne sont pas connues du compilateur parce qu'ils se produisent au moment de l'exécution.
  4. Vous pouvez récupérer des exceptions en les manipulant par blocs try-catch.
  5. Exceptions sont principalement causées par l'application elle-même.
  6. Exemples: Exceptions cochés: SQLException, IOException
    Exceptions: Unchecked ArrayIndexOutOfBoundException, ClassCastException, NullPointerException

en savoir plus: http://javaconceptoftheday.com/difference- entre-error-vs-exception en java / http://javaconceptoftheday.com/wp-content/uploads/2015/04/ErrorVsException.png

La description de la classe Error 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   attraper. La plupart de ces erreurs sont   des conditions anormales. le ThreadDeath   erreur, si une condition « normale », est   aussi une sous-classe de Error parce que la plupart   les applications ne devraient pas essayer d'attraper   il.

     

Un procédé n'a pas à déclarer   la clause jette tous les sous-classes de   Error qui pourrait être jeté pendant la   l'exécution de la méthode, mais pas   pris, étant donné que ces erreurs sont   des conditions anormales qui ne devraient jamais   se produire.

Citée de propres href="http://java.sun.com/javase/6/docs/api/java/lang/Error.html" de la Error de classe .

En bref, vous ne devriez pas prendre Errors, sauf que vous avez une bonne raison de le faire. (Par exemple, pour éviter que votre implémentation de serveur Web pour se bloquer si une servlet à court de mémoire ou quelque chose comme ça.)

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

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

Similitudes:

  • Tout d'abord - les deux classes s'étend java.lang.Throwable et en conséquence hérite de nombreuses méthodes qui sont communes à utiliser pour traiter avec des erreurs telles que: getMessage, getStackTrace, et printStackTrace ainsi de suite.

  • En second lieu, comme les sous-classes de java.lang.Throwable ils héritent les propriétés suivantes:

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

    • Seuls java.lang.Throwable et sous-classes autorisées à utiliser dans la clause catch.

    • Seuls java.lang.Throwable et les sous-classes peuvent être utilisées avec mot-clé -. throw

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

Différences:

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

    Un passage de javadoc Description A propos de java.lang.Error:

      

    ... indique des problèmes graves qu'une application raisonnable devrait   ne pas essayer d'attraper.

    En java.lang.Exception opposé conçu pour représenter les erreurs prévu et peut être manipulé par un programmeur sans terminer l'exécution du programme.

    Un passage de javadoc Description A propos de java.lang.Exception:

      

    ... indique les conditions qu'une application raisonnable pourrait vouloir   prises.

  • La deuxième différence entre java.lang.Error et java.lang.Exception que la première considérée comme une décochée exception pour la vérification des exceptions à la compilation. Comme le code de résultat lancer 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 jetant java.lang.Exception déclaration requise dans l'en-tête de la méthode.

Throwable et son diagramme de classes successeur (propriétés et méthodes sont omis). entrer la description d'image ici

OMI une erreur est quelque chose qui peut causer votre application à l'échec et ne doivent pas être manipulés. Une exception est quelque chose qui peut entraîner des résultats imprévisibles, mais il peut être récupéré.

Exemple:

Si un programme est à court de mémoire, il est une erreur que l'application ne peut pas continuer. Cependant, si un programme accepte un type d'entrée incorrecte, il est une exception que le programme peut gérer et rediriger pour recevoir le type d'entrée correcte.

Voici un assez bon résumé de Java API quelle erreur et d'exception représente:

  

Une erreur est une sous-classe de Throwable qui indique des problèmes graves qui ne devrait pas essayer une application raisonnable de prendre. La plupart de ces erreurs sont des conditions anormales. L'erreur ThreadDeath, si une condition « normale », est aussi une sous-classe d'erreur, car la plupart des applications ne doivent pas essayer de l'attraper.

     

Un procédé n'a pas à déclarer   la clause jette tous les sous-classes de   Erreur qui pourrait être jeté pendant la   l'exécution de la méthode, mais pas   pris, étant donné que ces erreurs sont   des conditions anormales qui ne devraient jamais   se 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.

Les erreurs sont principalement causées par l'environnement dans lequel l'application est en cours d'exécution. Par exemple, OutOfMemoryError se produit lorsque 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 à l'objet nul ou ClassCastException se produit lorsqu'une application tente de jeter les types de classes incompatibles.

Source: différence entre erreur Vs Exception en Java

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top