Andere Tipps

Nein - weil NaN ein gültiger Wert ist, verwenden es wird nicht dazu führen Ausnahmen geworfen werden. Ohne allgegenwärtige Überwachungsmechanismen zu nutzen, würden Sie explizit an den Punkten testen müssen, wo es könnte von einem Verfahren zugewiesen oder zurückgeschickt werden.

Wenn Sie die Leistung der Anwendung Opfer bereit, können Sie einen Wrapper für Doppel erstellen (oder ein anderes numerisches Objekt Sie verwenden möchten) und werfen Ausnahme, wenn NaN Satz ist.

Technisch wäre es möglich, ein Mittel zu schaffen, dies zu tun, indem Sie den Code in Frage einzuspritzen instrumentiert Assertion oder , wenn Tests automatisch. Dies würde ein wenig Bytecode Inspektion beinhaltet und Transformation (zum Beispiel unter Verwendung von ASM ). Meiner Meinung nach wäre es außergewöhnliche Umstände nehmen, dies zu rechtfertigen. Sie müßten vorsichtig sein, nicht zu Instrumente aller Klassen, die Verfahren darauf setzen, NaN intern.

Ich bin mir nicht bewusst, dass jemand ein solches Mittel geschrieben hat. Wenn Sie sich für einen Königsweg suchen, glaube ich nicht, es ist.

Ein weiterer Ansatz - könnten Sie Code Kontrolleure wie PMD in Ihren Build-Prozess integrieren und eine Regel erstellen, berichtet jeden Auftrag von Double.NaN.

Es wird nicht perfekt sein, weil es nicht fangen kann NaN ist man von außen bekommen (Datenbank, Verbindungen), oder dass jemand schafft durch Manipulation wenig, aber zumindest kann man das Double.NaN versichern kann, nicht zu einer Variablen zugewiesen werden oder als Methodenparameter oder innerhalb einer Auswertung verwendet werden.

definiert die Regeln könnten eine Herausforderung sein - aber zumindest - es ist ein anderer Ansatz. Die einfachste Regel könnte sein Double.NaN überhaupt zu verbieten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top