Da gefällt mir übrigens sehr der Ansatz von Rust (ohne, dass ich das bisher selbst probiert habe): Die Funktion gibt einen Result-Typen zurück, und man muss prüfen ob es ein SuccessResult ist, bevor man an den Wert dran kommt.
Puh, das driftet jetzt aber sehr ab - Result<T,E> in Rust ist aus der funktionalen Programmierung, um die Abwesenheit eines Wertes (in anderen Sprachen oft mit einem Nullable<T> modelliert), oder einen Fehler ohne
Exception raising darzustellen, womit man sehr gut pure Funktionen aneinanderketten kann. Siehe auch die Präsentation "Railway Oriented Programming" von Scott Wlaschin.
Ich hab über diese Thematik übrigens auch schon gebloggt:
https://delphisorcery.blogspot.com/2...nil-maybe.html
https://delphisorcery.blogspot.com/2...or-delphi.html
Kommt jetzt aber arg vom Thema "Exit oder nicht" ab