Chaque exception a-t-elle une prise d'essai obligatoire?
Une simple question et je ne trouve pas la réponse.
Est-il nécessaire pour chaque exception en Java utiliser un try-catch? Ou est-ce uniquement pour le FileNotFoundException?
Beaucoup d'exceptions (IndexOutOfBoundException, ArithmeticException, IlligalArgumentException, NullPointerException) disent qu'ils n'ont pas besoin d'une Exception, mais FileNotFoundException)... et je ne peux pas trouver la réponse qui existent et qui n'a pas besoin de try-catch.
source d'informationauteur Youri
Vous devez vous connecter pour publier un commentaire.
Il n'est pas absolument nécessaire d'avoir un
try/catch
bloc pour vos exceptions. Au lieu de cela, vous pouvezthrow
à quelqu'un qui est capable de gérer l'exception correctement.Il y a 2 sortes d'exceptions: activée et Désactivée. Un Checked exception peut être considéré comme celui qui est trouvé par le compilateur, et le compilateur sait qu'il a une chance de se produire, de sorte que vous besoin de
catch
outhrow
. Par exemple, l'ouverture d'un fichier. Il a une chance d'échouer, et le compilateur sait, donc vous êtes obligé decatch
outhrow
la possibleIOException
.Incontrôlées exception peut être considéré comme un qui a une chance de se produire, mais en fonction de votre code, le compilateur ne sait pas. En d'autres termes, c'est un erreur de programmation. Par exemple, si vous prenez d'entrée de l'utilisateur et s'attendent à un nombre, et que l'utilisateur entre quelque chose que vous ne vous attendiez pas, comme une chaîne de caractères, votre programme devrait jeter un
NumberFormatException
. Vous pouvez prévoir ces scénarios et de mettretry/catch
d'essayer et de les éviter avant qu'ils ne surviennent. Très rarement vu, c'est une personne de l'ajout d'unthrows NullPointerException
outhrows NumberFormatException
(ou de jeter tout autre Décoché exception, d'ailleurs). Il est permis, mais explicitement la création de cette exception, c'est bizarre et la plupart des gens disent que c'est mauvais style de codage.Noter que tous Vérifié suggestions doit être pris ou jetés à quelque chose qui peut s'en occuper; si vous ne le faites pas, votre programme ne compile pas. Si vous jetez quelque chose qui ne peut pas gérer cela, alors votre programme sera probablement en panne si elle se produit.
Notez également qu'un décoché Exception (par exemple: celle qui se produit pendant l'exécution, généralement par l'intermédiaire d'une mauvaise saisie de l'utilisateur ou d'autres joyeusetés) sera aussi généralement le plantage de votre programme. Ainsi, il est généralement une bonne idée d'utiliser
try/catch
quand quelque chose peut potentiellement aller mal, mais vous n'avez pas à.Également intéressant de noter, c'est que tout Vérifié exceptions sont des sous-classes d'Exception et non des exceptions sont des sous-classes de RuntimeException, RuntimeException lui-même est une sous-classe d'Exception. Cela signifie que si tu le voulais vraiment, un seul
try {} catch (Exception e) {}
va attraper tout seul l'exception de votre programme pourrait éventuellement jeter. Accordée, ce qui est considéré comme une horrible façon de traiter les exceptions, et vous devez attraper chacun séparément, de sorte que vous pouvez les traiter séparément. S'il vous plaît essayer de ne pas l'utiliser.Non, pas tous d'exception nécessite un try-catch. Chaque vérifié exception exige un try catch. Par exemple, un NullPointerException est décochée exception, donc il n'a pas besoin d'un try-catch, alors qu'un FileNotFoundException est vérifié, il n'en nécessite un. Vous pouvez aussi ajouter des "lancers" à la signature de la méthode et ainsi éviter d'avoir besoin d'un try-catch.
Lire:
https://docs.oracle.com/javase/tutorial/essential/exceptions/
Fondamentalement vérifié les Exceptions doivent être manipulées ou jetés
Décoché des Exceptions et des Erreurs peuvent être manipulés ou jetés (bien que la manipulation d'Erreur est en général considéré comme une mauvaise pratique).
Vérifié exception est tout ce qu'il hérite de java.lang.Exception
Décoché exception est tout ce qu'il hérite de java.lang.RuntimeException
Erreur est tout ce qu'il hérite de java.lang.Erreur
Seulement Vérifié exception explicite besoin de l'attraper, pour les autres toutes sortes d'exception, vous pouvez utiliser le bouton "jette" à la signature de la méthode.
Lorsqu'une méthode que vous appelez explicitement déclenche une exception alors vous devez utiliser
try....catch
boucle. Mais dans le cas de la liste que vous avez donné sont tous des exceptions d'exécution. Ils jettent parfois un programme a des entrées qui n'ont pas été prévue ou le programme a été mis pour quelque utilisation que ce n'était pas prévu pour. Ces n'aurait pas besoin d'untry....catch
boucle.Oui, mais si vous ne voulez pas gérer dans votre méthode, vous pouvez passer l'exception de l'appelant de la méthode avec le
throws
mot-clé. Exemple:Edit: je suis un peu rouillé sur mon java, comme josh dit que vous pouvez avoir décoché des exceptions qui n'ont pas besoin d'un try/catch comme
NullPointerException
mais vous pouvez en ajouter un si vous pensez qu'un décoché exception peut être levée. Exemple: