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 ?
Réponses
Trop de publicités?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 unNullPointerException
ou un argument illégal. Les Applications peuvent parfois gérer ou à récupérer de cetteThrowable
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
etTimeoutException
...
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.
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.
La description de l' Error
classe est tout à fait clair:
Un
Error
est une sous-classe deThrowable
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 deError
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 Error
s, 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.
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.