Exceptions sind Teil der strukturierten Programmierung. Ist vielleicht Geschmackssache, ob man welche wirft und wann und wie. Aber wenn ich mit Klassen arbeite kannich einfach eine Methode nach der anderen aufrufen und die Fehlerbehandlung zentral an einer Stelle abhandeln. Hat den Vorteil, dass ich nicht zich if-then Ebenen habe und in der 10. dann gucken muss, wo ich eigentlich bin und ob alle Bedingungen noch Konsistent sind. Beispiel:
Delphi-Quellcode:
if funca then
begin
if funcb then
begin
if funcc then
begin
// irgendwas
else
// irgendwas
end
else
//irgendwas
end
else
// irgendwas
end;
Jetzt der Code mit Exceptions:
Delphi-Quellcode:
funca ();
begin
if not APIFunc then
RaiseLastOSError;
end;
Delphi-Quellcode:
try
funca;
funcb;
funcc;
execpt
ShowMessage(EcodeToString(
Exception.ECode));
end;
Das funktioniert natürlich nur, wen die Funktionen Exceptions werfen. Und da kann es schon sinnvoll sein eine
API Funktion so zu kapseln, dass sie eine
Exception wirft.
Siehe auch:
http://docs.embarcadero.com/products...stOSError.html