Code:
procedure foo;
var
LHandle1, LHandle2, LHandle3, LHandle4 : THandle;
begin
LHandle1 := GetHandleFromElsewhere;
if LHandle1 = INVALID_HANDLE then return;
LHandle2 := GetHandleFromElsewhere(LHandle1);
if LHandle2 = INVALID_HANDLE then return;
...
end;
Persönlich bin ich nicht von der Notwendigkeit von Exceptions überzeugt. Vor allem finde ich, dass die Exceptionbehandlung in den meisten Sprachen (auch in Delphi) nicht wirklich schön lesbarer Code ist.
In diesem Beispiel sind Exceptions tatsächlich nicht notwendig, denn der Fall der geprüft wird, wird nicht direkt als Fehlerfall gehandhabt wird. Aber: Nehmen wir an, die Methode hat als Voraussetzung, dass alle 4 Handles gegeben sind. Wie sieht dann die If-Abfrage aus, bzw. wie wird dem Aufrufer am besten mitgeteilt, dass die Daten, die übergeben wurden, nicht valide waren?
Für den Fall, dass eine Methode einen Fehlerfall nicht korrekt behandeln kann, sind Exceptions ein valider, sauberer und sinnvoller Weg.