Der Vorteil des raisen von Exceptions in einer entsprechenden Routine (außer, dass man seinen Code wiederverwertbar kapselt) und nicht direkt im Code, der sie verursacht
wurde von Eric Grange schonmal schön erklärt.
Ich finde hier die Idee der
Preconditions aus Guava recht praktisch. Diese orientieren sich aber primär an den Exceptions, die sie werfen (InvalidArgumentException, NullPointerException, IllegalStateException, etc.). Der Kontext der Prüfung kann dann in die Message der
Exception verpackt werden.
Etwas Delphi-ähnliches ließe sich auch recht leicht realisieren, wobei ich mich hier (Wie Günther schon sagt) meist an generelleren Exceptions orientieren würde - vereinfacht auch die Wiederverwendung in anderen Projekten.
Gibt's schon in ähnlicher Form, nennt sich
Spring.Guard
.
Obiger Code sähe damit so aus:
Guard.CheckRangeInclusive(aIndex, MinValue, MinValue);