Das ist richtig, aber persönlich würde ich es anders herum strukturieren. Es ist üblich, Argumente zu Beginn des Verfahrens zu überprüfen und sie dann für den Rest des Verfahrens verwenden sie richtig sind zu wissen:
public void addCard(Card card) {
if (card == null) {
throw new IllegalArgumentException("Attempt to add null card");
}
cardList.add(card);
}
Der Vorteil dabei all das Argument Prüfung up-front ist, dass, wenn ein Ungültiges Argument wird an Sie übergeben, Sie werden eine Ausnahme auslösen, bevor irgendwelche Nebenwirkungen aufgetreten sind - und nicht die Hälfte der Methode, wodurch das Objekt in einem ungültigen Zustand bleiben könnte. Natürlich in diesem Fall spielt keine Rolle, aber ich bevorzuge Konsistenz hier :)
Beachten Sie, dass gibt es keine Notwendigkeit IllegalArgumentException
zu erklären - es ist eine Unterklasse von RuntimeException
, die es nicht markiert bedeutet (Sie müssen es nicht zu erklären,).
Vielen Dank für Ihre Kommentare. Nicht sicher, ob ich die 4. Aussage bekommen habe. Meinst du, ich muss hier keine Ausnahme machen? – Eugene
@AndroidNoob - Sie müssen die Ausnahme auslösen, Sie müssen nicht nur * deklarieren *, dass Sie es werfen. 'public void addCard (Card card)' allein genügt, da IllegalArgumentException eine RuntimeException ist. –
Ah ok, hab es, danke! – Eugene