Wertbeschränkung Exception oder Anpassung?

Diskutiere Wertbeschränkung Exception oder Anpassung? im Allgemeine Java-Themen Bereich.
S

Schuriko

Was wäre ein korrekter Weg, wenn ich z.B. einer Funktion einen Integer Wert übergeben will, dessen Wert nur zwischen zwei festgelegten Werten liegen darf?

Beispiel:
Ich habe eine Funktion dessen übergebener Integer nur zwischen 50 und 100 liegen darf.

Würdet ihr bei einer Unterschreitung / Überschreitung entsprechend der Beschränkung anpassen? Also z.B. bei 49 => 50 und 101 => 100
Oder würdet ihr eine Exception werfen?
 
J

JustNobody

Ich tendiere klar zur Exception, da ich keine Daten ungefragt ändern würde.

Aber das hängt durchaus vom Anwendungsfall ab. Nehmen wir eine Motorsteuerung: da gibt es klare Grenzen und ich würde da gewisse Reglungen vorsehen: Drehzahl kann technisch nicht zwischen 0 und eine gewissen Minimum sein... und ab einer Drehzahl geht wohl der Motor kaputt ....

Aber auch da ist die Frage, wo und wie man das umsetzt und da ist dann eine klare Verantwortlichkeit...
 
MoxxiManagarm

MoxxiManagarm

Ich würde auch ganz klar Exception sagen, typischer Weise ist das die IllegalArgmentException. Natürlich kann es, wie JustNobody sagte, auch Anwendungsfälle geben, wo eine Beschränkung ok ist. Das ist eine rein fachliche Frage und kannst alleine du beantworten je nach Anforderung. Manchmal können auch beide Möglichkeiten akzeptabel sein.

Beispiel:
Ein Obststand hat noch 5 Äpfel. Dann kommt ein Kunde und möchte 6 Äpfel. Du kannst ihn entweder den Fehler aufzeigen und keinen Apfel in seine Tüte packen (Exception) oder ihn einfach alle 5 verfügbaren Äpfel einpacken (Anpassung)
 
L

LimDul

Muss meinen beiden Vorrednern zustimmen - Wenn eine Funktion ein Argument bekommt, was laut ihrer Beschreibung nicht ok ist, dann ist eine IllegalArgumentException das Mittel der Wahl.

Man kann davon Ausnahmen machen:
- Wenn von der fachlichen Beschreibung der Funktion es ok wäre das zu kürzen, also die Fachlichkeit immer noch korrekt aussieht
- Und man davon ausgehen kann, dass es keine weiteren Folgefehler gibt.

Vor allem der zweite Teil ist der, warum eine Exception meist sinnvoller ist. Wenn deine Funktion sagt, du darfst nur werte von 50 bis 100 reinstecken und jemand ruft sie mit 40 auf, ist schon vorher irgendwas schiefgelaufen. Und die 40 ist nur ein Symptom des eigentlichen Fehlers. Wenn du die nun zur 50 wandelst, bleibt der eigentliche Fehler unentdeckt und taucht vielleicht viel später an irgendeiner obskuren Stelle wieder auf. Und dann versucht man den nachzuvollziehen und wenn man dann endlich die Ursache gefunden hat, fragt man sich, warum man nicht an X anderen Stellen auch schon ein Problem hat - nur um festzustellen, dass da jemand einfach solche "Heftpflaster" gebaut hat.

Von daher bin ich ein Freund davon strikt die Eingabeparameter zu checken.
 
F

fhoffmann

Ich stimme meinen Vorrednern zu, möchte nur noch einen Punkt ergänzen:

Man sollte Exceptions eigentlich nicht zur Programmsteuerung nutzen. Deshalb sollte man dem Aufrufer die Möglichkeit geben, die Exception zu verhindern. Im Beispiel des Obststandes, der nur noch fünf Äpfel hat, bedeutet dies: Bevor der Kunde sechs Äpfel bestellt, muss er die Möglichkeit haben, den Händler zu fragen, ob er noch sechs Äpfel hat.
 
Thema: 

Wertbeschränkung Exception oder Anpassung?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben