Wie sollte ich in Java eine Division durch Null-Ausnahme werfen, ohne tatsächlich durch Null zu teilen?
Ich habe ein I2C-Gerät, dass will zwei Eingänge: einen Nenner und einen Zähler. Beide sind geschrieben an verschiedenen Adressen, so dass keine tatsächliche Berechnung (numerator/denominator
) vorgenommen wird. Das problem hierbei ist, dass eine Division durch null auftreten konnte, auf das I2C-device, also eine Division durch null-Fehler kontrolliert werden muss. Ideal, genau das gleiche würde passieren, wenn die Teilung durchgeführt wurden, die von der java-code.
Im moment habe ich bodged eine nicht verwendete variable, nicht der division, aber ich mache mir sorgen das es dann optimiert aus:
public void setKp(int numerator, int divisor)
{
int zeroCheck = numerator / divisor;
//... doesn't use zeroCheck
}
Sicherlich gibt es einen besseren Weg geben!
Kommentar zu dem Problem
Die Antworten, die darauf hindeutet, überprüfen Teiler direkt besser scheinen, aber ich kann mir nicht vorstellen das immer wegoptimiert. Sicher, dass die zeroCheck möglicherweise nicht zugewiesen bekommen, aber die division hat ein Potenzial, um eine exception zu werfen, so kann ich mir nicht vorstellen, dass es tatsächlich wegoptimiert.
InformationsquelleAutor der Frage Eric | 2009-11-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nicht werfen eine ArithmeticException. Da der Fehler ist in der angegebenen Argumente, werfen einen
IllegalArgumentException
. Als die Dokumentation sagt:Das ist genau das, was hier vor sich geht.
InformationsquelleAutor der Antwort Joren
Hierzu:
ArithmeticException ist die Ausnahme, die Regel ausgelöst, wenn Sie eine Division durch 0.
InformationsquelleAutor der Antwort uckelman
InformationsquelleAutor der Antwort João Silva
Gibt es zwei Möglichkeiten, wie Sie dies tun könnte. Entweder erstellen Sie Ihre eigenen benutzerdefinierten exception-Klasse zur Darstellung einer Division durch null Fehler oder werfen Sie die gleiche Art von Ausnahme, die java-runtime werfen würde in dieser situation.
Definieren eigener exception
Dann in Ihrem code, Sie würde prüfen, ob eine Division durch null und werfen diese exception:
Werfen ArithmeticException
Ihrem code hinzufügen, die Prüfung auf Division durch null und löst eine arithmetic-exception:
Darüber hinaus könnten Sie werfen eine illegal argument exception, da der divisor null ist eine falsche argument zu übergeben, um Ihre setKp () - Methode:
InformationsquelleAutor der Antwort slangevi
Etwas wie:
InformationsquelleAutor der Antwort Bart Kiers