Ich verstehe nicht, warum du die Information der eigentlichen
Exception ignoriert und durch eine unspezifische
Exception mit einer ebensolchen Meldung ersetzen willst. Wenn du unbedingt die Fehlermeldung ändern willst, dann kann man das auch direkt tun.
Aber unabhängig davon, bleiben die DataSets bei einer
Exception erstmal offen. Da ich annehme, dass ohne die
Exception die DataSets an anderer Stelle korrekt geschlossen werden, sollte es genügen dies bei der
Exception ebenso zu tun:
Delphi-Quellcode:
try
DataMod.T_ABFBaum.Open;
DataMod.Q_ArtLief.Open;
DataMod.T_ArtMenge.Open;
DataMod.Q_StckList.Open;
DataMod.T_ArtMenge_StckList.Open;
DataMod.Q_Hersteller.Open;
except
on E:
Exception do begin
DataMod.Q_Hersteller.Close;
DataMod.T_ArtMenge_StckList.Close;
DataMod.Q_StckList.Close;
DataMod.T_ArtMenge.Close;
DataMod.Q_ArtLief.Close;
DataMod.T_ABFBaum.Close;
E.
Message := '
Fehler beim Öffnen der Tabellen!';
raise;
// Hier bleibt wenigstens die Exception-Klasse unverändert.
end;
end;
Und ja, jeglicher Code nach
raise wird nicht ausgeführt. Man erkennt das im Editor auch an dem kleinen Pfeil.