Wenn ich einen Code nur unter bestimmten bedingungen ausführe, wann werfe ich eine Exception und wann prüfe ich nur, ob die Bedingungen erfüllt sind?
public bool tryTestInt(int i){
if( i > 0 && i < 101}{ // doSomething...; return true }
return false;
}
oder
public void testInt(int i){
if( i <= 0 && i > 100}{ throw new ArgumentException();
}
}
Es geht um das manuelle Werfen einer Exception, will heißen, der Code im ersten Beispiel würde keine Exception werfen (IndexOutOfRange, ...), wenn man nicht auf die Bedingungen prüfen würde und die Bedingungen nicht erfüllt sind.
Wann würde ich welches Design benutzen?
Das erste Beispiel prüft auf eine Bedingung und führt die Methode aus, wenn Bedingungen erfüllt sind, sonst nicht. Das bekommt das Objekt ja aber nicht mit, welches die Funktion gerufen hat. Würde man also eine Exception werfen und in der Methode, in dem man diese Methode ruft, dann mit try-catch-finally arbeiten, damit das Objekt weiß, ob die Methode erfolgreich ausgeführt wurde? Bei dem Zurückgeben eines Boolean ist ja das Problem, dass es ja auch bereits einen anderen Rückgabetyp geebn könnte.