Je voudrais avoir une sorte de mécanisme rapide de l'échec à l'échelle du projet (peut-être un dans mon projet Je réalise que je pourrais ajouter des affirmations (en utilisant RunTimeException code>) pour tout code qui provoque l'affectation de
NAN code>. P>
nan code> n'est jamais une valeur valide. p>
5 Réponses :
Non - parce que nan code> est une valeur valide, l'utilisation de celle-ci ne fera aucune exception. Sans aucun mécanisme de surveillance omniprésente à utiliser, vous devez tester explicitement les points où il pourrait être attribué ou renvoyé d'une méthode. P>
Si vous êtes prêt à sacrifier les performances de l'application, vous pouvez créer une enveloppe pour double (ou autre objet numérique que vous souhaitez utiliser) et lancer une exception lorsque nan code> est défini. P>
Oui, vous pouvez utiliser AspectJ (programmation orientée forme) pour lancer une erreur chaque fois qu'une valeur est définie sur Nan. p>
essentiellement, vous souhaitez intercepter chaque fois qu'une valeur est définie et effectuer une autre fonction. P>
Nous avons fait des choses similaires dans notre codebase ... mais je ne peux pas vous donner beaucoup d'aide en dehors de cela. P>
Techniquement, il serait possible de créer un agent pour le faire par Je ne suis pas conscient que quiconque a écrit un tel agent. Si vous cherchez une balle d'argent, je ne pense pas qu'il y en a un. P>
Une autre approche - vous pouvez intégrer des dames de code tels que PMD dans votre processus de construction et créez une règle qui rapporte chaque affectation de Ce ne sera pas parfait, car il ne peut pas attraper la nan, vous obtenez de l'extérieur (base de données, connexions) ou que quelqu'un crée une manipulation de bits, mais au moins vous pouvez assurer que Définition des règles pourrait être difficile - mais au moins - c'est une autre approche. La règle la plus simple pourrait être d'interdire double.Nan code>. p>
double.Nan code> On ne peut pas être attribué à une variable ou être utilisé comme paramètre de méthode ou à l'intérieur d'une évaluation. P>
double.Nan code> du tout. P>
Que prévoyez-vous réellement de faire?
Ce que i b> voudriez faire est de savoir exactement où un calcul numérique compliqué passe mal, sans diffusion
iSnan code> tests sur le code. Dans de nombreux autres environnements, je peux utiliser IEEE 754 pièges , mais Pas sur le JVM .