Ich benutze Ausnahmen, um Probleme frühzeitig zu erkennen. Beispielsweise:
public int getAverageAge(Person p1, Person p2){
if(p1 == null || p2 == null)
throw new IllegalArgumentException("One or more of input persons is null").
return (p1.getAge() + p2.getAge()) / 2;
}
Mein Programm sollte null
diese Funktion niemals bestehen . Ich habe es nie vor. Wie wir alle wissen, passiert jedoch unbeabsichtigtes Programmieren.
Wenn dieses Problem auftritt, kann ich eine Ausnahme auslösen und beheben, bevor an anderen Stellen im Programm weitere Probleme auftreten. Die Ausnahme stoppt das Programm und sagt mir, dass "hier Schlimmes passiert ist, behebe es". Anstatt null
sich im Programm zu bewegen und Probleme zu verursachen.
Nun, Sie haben Recht, in diesem Fall null
würde das einfach NullPointerException
sofort einen auslösen , daher ist es möglicherweise nicht das beste Beispiel.
Aber betrachten Sie eine Methode wie diese zum Beispiel:
public void registerPerson(Person person){
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
In diesem Fall würde ein null
as-Parameter um das Programm herum übergeben und könnte später zu Fehlern führen, die nur schwer auf ihren Ursprung zurückzuführen sind.
Ändern Sie die Funktion wie folgt:
public void registerPerson(Person person){
if(person == null) throw new IllegalArgumentException("Input person is null.");
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
Ermöglicht es mir, das Problem zu erkennen, bevor es an anderen Stellen seltsame Fehler verursacht.
Auch eine null
Referenz als Parameter ist nur ein Beispiel. Es kann viele Arten von Problemen geben, von ungültigen Argumenten bis zu allem anderen. Es ist immer besser, sie früh zu erkennen.
Meine Frage lautet also einfach: Ist das eine gute Praxis? Ist meine Verwendung von Ausnahmen als Tools zur Problemverhütung sinnvoll? Ist dies eine legitime Anwendung von Ausnahmen oder ist dies problematisch?