Frage

Ich baue eine wissenschaftliche Software mit vielen Berechnungen, und natürlich können Argumente falsche Längen haben usw., also habe ich verwendet IllegalArgumentException Klasse, wie es für das Problem richtiger Name schien, aber sollte ich das setzen throws IllegalArgumentException bei der Funktionsdefinition?

Ich frage das, denn nachdem ich es geschrieben habe, bat mich der Eclipse -Redakteur nicht, die Funktion mit Try and Catch zu umgeben. Ich dachte, so wurde der Versuch erzwungen. Ich habe das Ausnahme -Tutorial bei java.com gelesen, aber ich bin mir nicht sicher, ob ich die Rolle in Bezug auf meine Frage richtig verstanden habe.

War es hilfreich?

Lösung

RuntimeExceptions wie IllegalArgumentException werden verwendet, um anzuzeigen Programmierfehler. Das Programm selbst sollte selten in der Lage sein, damit umzugehen. Jemand muss den Code manuell beheben.

Potenzial RuntimeExceptions sollte irgendwie im Funktionsvertrag (dh Javadoc) dokumentiert werden, entweder mit dem expliziten @throws, oder beim Beschreiben der Eingaben. Wenn Sie keinen Javadoc für die Funktion haben, möchten Sie möglicherweise die Throw -Klausel hinzufügen, um die potenziellen Fallstricke der Verwendung der Funktion zu dokumentieren. Im Allgemeinen werden jedoch Ausnahmen für Laufzeit -Ausnahmen geklärt.

Wenn das Geben einer falschen Länge kein Programmierfehler ist, sondern eine Ausnahmersituation ist, würde ich eine neue überprüfende Ausnahme (z. B. BadLengthError) erstellen. Wenn es sich nicht um eine außergewöhnliche Situation handelt, verwenden Sie keine Ausnahmen für die Durchflussregelung.

Andere Tipps

Es gibt zwei Arten von Ausnahmen:

Laufzeitausnahmen (wie illegalArgumentException und z. Wenn sie es tun, müssen Sie natürlich irgendwo umgehen.

Regelmäßige Ausnahmen müssen erwischt oder als geworfen erklärt werden, da sie einen an sich häufigeren Fehler darstellen.

Sie müssen sich über ungeprüfte Ausnahmen informieren - Ausnahmen, die von RunTimeException erben. Sie müssen im Methode -Header nicht deklariert werden.

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

Der letzte Absatz fasst es zusammen:

Wenn ein Kunde vernünftigerweise von einer Ausnahme wiederhergestellt werden kann, machen Sie es zu einer geprüften Ausnahme. Wenn ein Kunde nichts tun kann, um sich von der Ausnahme wiederherzustellen, machen Sie es zu einer ungeprüften Ausnahme.

IllegalArgumentException (zusammen mit einigen anderen zum Beispiel NullPointerException) sind Beispiele von a RuntimeException. Diese Art von Ausnahme ist nicht das, was als bekannt ist Überprüfte Ausnahme. Java verlangt, dass Methoden erklären, welche überprüften Ausnahmen sie werfen, und dass, wenn eine aufgerufene Methode eine geprüfte Ausnahme ausführt, die aufrufende Methode entweder erklären sollte, dass sie die Ausnahme selbst ausgelöst oder fangen und damit umgehen.

Als solches wäre meine konkrete Empfehlung nein, deklarieren Sie es nicht. Natürlich möchten Sie es nicht fangen. In den meisten Fällen möchten Sie es auch nicht werfen wenn nicht das ist unerwartet Verhalten. Wenn es ganz normal und vernünftig ist, dass die Methode einen Wert erhält, den es nicht mag, ist eine Ausnahme der falsche Weg, um damit umzugehen.

Möglicherweise möchten Sie auch in Betracht ziehen, Behauptungen zu verwenden.

Der erste Punkt beim Verständnis von Ausnahmen ist, dass sie für außergewöhnliche Situationen sind. Wenn Sie über Ihre Methode nachdenken, müssen Sie sich fragen: "Sollte diese Methode eine Ausnahme ausgelöst, wenn ein außergewöhnlicher Wert durchgeführt wird?" Wenn die Antwort "Ja" lautet, geben Sie sie in Ihre Methodenerklärung ein. Ich weiß nicht, ob Sie die Idee haben, aber es ist einfach einfach. Es ist nur eine Frage der Praxis.

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