Question

Je construis un logiciel scientifique avec beaucoup de calculs et d'arguments de cours peuvent avoir mal longueurs etc ... Donc, je classe IllegalArgumentException comme il semblait bon nom pour la question, mais dois-je mettre le throws IllegalArgumentException à la définition de la fonction ?

Je demande cela parce qu'après je l'ai écrit, l'Eclipse éditeur ne m'a pas demandé d'entourer la fonction avec try et catch. Je pensais que c'est de savoir comment essayer et attraper ont été appliquées. J'ai lu la gestion des exceptions tutoriel à Java.com mais je ne suis pas sûr d'avoir compris la partie au sujet de ma bonne question bien.

Était-ce utile?

La solution

RuntimeExceptions comme IllegalArgumentException sont utilisés pour indiquer erreurs de programmation . Le programme lui-même doit rarement être en mesure de le manipuler. besoins de quelqu'un pour réparer manuellement le code.

RuntimeExceptions potentiels doivent être documentées en quelque sorte dans le contrat de fonction (à savoir javadoc), que ce soit avec le @throws explicite, ou tout en décrivant les entrées. Si vous ne disposez pas d'un javadoc pour la fonction, vous pouvez ajouter la clause throws juste pour documenter les pièges potentiels de l'utilisation de la fonction, mais en général l'ajout de clauses jette des exceptions d'exécution est déconseillée.

Si donner une mauvaise longueur n'est pas en fait une erreur de programmation, mais est une situation d'exception, je voudrais créer une nouvelle exception vérifiée (comme BadLengthError). Si ce n'est pas une situation exceptionnelle, ne pas utiliser des exceptions pour le contrôle de flux.

Autres conseils

Il y a deux types d'exceptions:

exceptions d'exécution (comme IllegalArgumentException et NullPointerException par exemple) ne doit pas être pris explicitement, parce qu'ils « ne devraient pas se produire ». Quand ils le font, bien sûr, vous devez les traiter quelque part.

exceptions régulières ont besoin d'être pris ou déclaré être jetés parce qu'ils représentent une sorte d'erreur intrinsèquement plus difficile.

Vous devez lire sur les exceptions non vérifiées - exceptions qui héritent de RuntimeException. Ils ne doivent pas être déclarés dans l'en-tête de la méthode.

http://download.oracle.com/javase/tutorial/ essentielles / exceptions / runtime.html

Les dernières sommes paragraphe il jusqu'à:

Si un client peut raisonnablement attendre pour récupérer d'une exception, faire une exception vérifiée. Si un client ne peut rien faire pour se remettre de la exception, en font un sans contrôle exception.

IllegalArgumentException (ainsi que d'autres, par exemple NullPointerException) sont des exemples d'un RuntimeException. Ce type d'exception n'est pas ce qui est connu comme vérifié exception . Java exige que les méthodes qui déclarent vérifier les exceptions qu'ils jettent et que si une méthode appelée peut lancer une exception vérifiée, la méthode d'appel doit soit déclarer qu'il lève l'exception elle-même, ou de prendre et manipuler.

En tant que tel, ma recommandation concrète ne serait pas, ne déclare pas. Certes, cependant, vous ne voulez pas être l'attraper. Dans la plupart des cas, vous ne voulez pas être jeter à moins que c'est inattendu comportement. S'il est tout à fait normal et raisonnable pour la la méthode pour être obtenir une valeur, il ne aime pas, une exception est la mauvaise façon de le gérer.

Vous pouvez également envisager d'utiliser des affirmations.

le premier point lorsque la compréhension des exceptions est qu'ils sont dans des situations exceptionnelles. Tout en pensant à votre méthode, vous devez demander: « Faut cette méthode renvoie 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 il est un peu simple. Il est juste une question de pratique.

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