Hi,
Zitat von
Apollonius:
Dein "puh" wird nicht nur nicht ausgeführt, wenn du eine neue
Exception wirfst; es genügt, wenn du auf spezielle Exceptions reagierst (on E: EWhatever do). Dann werden andere Exceptions nämlich durchgereicht und dein "puh" kommt nicht zum Zuge.
Und genau das sollte man immer machen. Sonst verliert beispielsweise Abort die Wirkung, oder man merkt gar nicht, dass man eine ganz andere Meldung anzeigt als zu der aufgetretenen
Exception passt.
Delphi-Quellcode:
try
StringList.Add(StrToInt(Edit.Text)); //Bei Add --> z. B. EOutOfResources
except
ShowMessage('Bitte Zahl eingeben!');
end;
Der Benutzer fragt sich nun, warum das keine Zahl war.
Delphi-Quellcode:
try
Abort;
except
foo;
end;
bar;
Hier werden trotz Abort foo und bar aufgerufen - und eventuell noch ganz andere Vorgänge ausgeführt, die eigentlich Abgebrochen werden sollten.
Etwas anderes ist es, wenn man raise; dazu schreibt.
Delphi-Quellcode:
function CreateBitmapFromFile(const FileName: String): TBitmap;
begin
Result := TBitmap.Create;
try
Result.LoadFromFile(FileName);
except
Result.Free;
raise;
end;
end;
Mfg
FAlter