So wie du das machst führst du die Strukturierteausnahmebehandlung ad absurdum. Normalerweise geht es so:
Delphi-Quellcode:
try
Anweisung;
Anweisung;
Anweisung;
Anweisung;
Anweisung;
Anweisung;
except
Fehlerbehandlung;
end;
Lösung für dich: Deklarier dir eigene Exceptions, die in den Unterfunktionen geworfen werden:
ESaveError, ELoadError, ESendMailError, ...
Und dann:
Delphi-Quellcode:
try
FileName := SaveHTML(slHTML);
SendMail(FileName);
...;
except
on E: ESaveError do
...;
on E: EOpenError do
...;
end;
ShellExecute wirft übrigens keine Exceptions, da es eine Windows
API-Funktion ist.
ShellExecute liefert einen Fehlercode zurück.