Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.663 Beiträge
 
Delphi 12 Athens
 
#6

AW: Datenbankfehler Programm bleibt im Speicher

  Alt 30. Apr 2025, 12:26
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat