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.