Dois-je jeter IllegalArgumentException à la fonction?
Je suis en train de construire un logiciel scientifique avec beaucoup de calculs et de cours d'arguments peuvent avoir de mauvaises longueurs etc... j'ai Donc utilisé IllegalArgumentException
classe comme il a semblé bon nom pour la question, mais dois-je mettre de la throws IllegalArgumentException
à la définition de la fonction ?
Je demande cela parce que après je l'ai écrit, l'Éclipse de l'Éditeur ne m'a pas demandé d'entourer la fonction avec try et catch. J'ai pensé que c'est de cette façon try et catch ont été appliquées. J'ai lu le tutoriel sur la gestion des exceptions Java.com pourtant, je ne suis pas sûr que j'ai compris la partie concernant ma question de droit.
source d'informationauteur Ismail Marmoush
Vous devez vous connecter pour publier un commentaire.
RuntimeException
s commeIllegalArgumentException
sont utilisés pour indiquer des erreurs de programmation. Le programme lui-même est rarement en mesure de gérer. Quelqu'un a besoin pour réparer manuellement le code.Potentiel
RuntimeException
s doivent être documentés en quelque sorte dans la fonction contrat (c'est à dire javadoc), soit avec l'explicite@throws
ou en décrivant les entrées. Si vous n'avez pas de javadoc pour la fonction, vous pouvez ajouter une clause throws juste pour documenter les écueils de l'utilisation de la fonction, mais en général, l'ajout de lance de clauses d'exécution des exceptions est découragé.Si donner une bonne longueur n'est pas réellement une erreur de programmation, mais est une situation d'exception, je voudrais créer un nouveau vérifié exception (comme BadLengthError). Si elle n'est pas une situation exceptionnelle, à ne pas utiliser les exceptions pour le contrôle de flux.
Il y a deux types d'exceptions:
des exceptions d'exécution (comme IllegalArgumentException et NullPointerException par exemple) n'ont pas besoin d'être explicitement pris, car ils "ne devrait pas arriver". Quand ils le font, bien sûr, vous avez besoin de manipuler quelque part.
régulière exceptions DOIVENT être pris ou d'déclaré être jetés parce qu'ils représentent la plus intrinsèquement difficile type d'erreur.
Vous avez besoin de lire sur Décoché Exceptions près exceptions qui héritent de RuntimeException. Ils n'ont pas besoin d'être déclarées dans l'en-tête de méthode.
http://download.oracle.com/javase/tutorial/essential/exceptions/runtime.html
Le dernier paragraphe résume:
IllegalArgumentException
(avec quelques autres, par exempleNullPointerException
) sont des exemples d'unRuntimeException
. Ce type d'exception n'est pas ce qui est connu comme une vérifié exception. Java exige que les méthodes de déclarer qui a vérifié les exceptions qu'ils jettent et que si le nom de la méthode est susceptible de jeter un checked exception, l'appel de la méthode doit déclarer qu'il lève l'exception de lui-même, ou de les attraper et de les gérer.En tant que tel, ma recommandation concrète serait pas, de ne pas la déclarer. Certainement, même si vous ne voulez pas être l'attraper. Dans la plupart des cas, vous ne voulez pas jeter sauf c'est inattendu comportement. Si c'est tout à fait normal et raisonnable pour la méthode à l'obtention d'une valeur qu'elle n'aime pas, une Exception est la mauvaise façon de le gérer.
Vous pouvez également envisager d'utiliser des assertions.
le premier point lors de la compréhension des exceptions, c'est qu'ils sont pour les situations exceptionnelles. Tout en pensant à votre méthode, vous devez vous demander: "si cette méthode lève une exception si une valeur exceptionnelle est passé à travers?" Si la réponse est "oui", le mettre dans votre déclaration de méthode.
Je ne sais pas si vous avez l'idée, mais c'est une sorte de simple. C'est juste une question de pratique.