Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MYSQL-Fehler nicht mit 'try ... finally' abzufangen? (https://www.delphipraxis.net/136068-mysql-fehler-nicht-mit-try-finally-abzufangen.html)

c-bob 23. Jun 2009 05:36

Datenbank: MYSQL • Version: 5 • Zugriff über: ZEOS (aktuelle Version)

MYSQL-Fehler nicht mit 'try ... finally' abzufangen?
 
Hi, iche schonwieder!

Kurze Frage: wenn ich ein Query mit SQL befülle und dann per "open" bzw. "ExecSQL" ausführe und dann kommt ein MYSQL-Fehler, kann ich den nicht mit "try ... finally" abfangen, richitg?!

Aber wie mache ich das dann, das nicht das ganze PRogramm stehen bleibt und der Rechner, der eigentlich ohne Bedienelemente ist, quasi ein Anzeigesystem, mit dem Programm erstmal weiter fortfährt?

-C-

mkinzler 23. Jun 2009 05:38

Re: MYSQL-Fehler nicht mit 'try ... finally' abzufangen?
 
Es kommt darauf an, was du mit Fehler meinst. M.W wirft Zeos Exceptions, welche sich dann mit try .. Except behandlen lassen

c-bob 23. Jun 2009 05:59

Re: MYSQL-Fehler nicht mit 'try ... finally' abzufangen?
 
Na bspw. folgender Vorgang:

SQL-Statement wird abgesetzt, in dem ist auf Grund nicht beachteter Schreibweise ein Komma Anstelle des Dezimalpunktes in einem Float. Ich selber habe das leider nicht (noch nicht) abgefangen. Aber es geht ja ums Prinzip.
Danach kommt dann folgerichtig ein SQL-Fehler. Den dachte ich aber dann mit try ... finally abzufangen und hab kurzerhand die gesamte Prozedur eingschlossen - nicht fein, aber dafür quick&dirty - es soll erstmal funktionieren.

Aber was ist dabei nun falsch?

EDIT: Ich glaube, es war mein Fehler - ich muss try .. except nutzen, oder?

Jens Hartmann 23. Jun 2009 06:05

Re: MYSQL-Fehler nicht mit 'try ... finally' abzufangen?
 
Hallo,

du müsstest das folgendermaßen hinbekommen. Die gewünschte Abarbeitung vom Programm kommt unter try... und was im Fall einer Exeption passieren soll unter Except.

z.B.

Delphi-Quellcode:

//..irgendwas
try
  //..QryTest.Irgendwas
  QryTest.ExecSQL
except
  ShowMessage('Da war ein Fehler');
end;
Mit den richtigen Anweisungen, kannst Du die Exeption auch noch abfangen und z.B. im ShowMessage ausgeben.

Gruß Jens

c-bob 23. Jun 2009 06:10

Oops, Sorry! War: MYSQL-Fehler nicht mit 'try ... f
 
Muss mich entschuldigen - ist halt n Anfänger-Fehler. Thread kann zu bzw. gelöscht werden

Wenn man Exceptions abfangen will, muss man eben auch try ... except nutzen und nicht try .. finally

... man bin ich blöd .... :wall: :oops: :wall:


@Jens:

Ja, Du warst auch noch schneller mit Deinem Post
.... blamabel blamabel ...
Aber danke für Mühe und Geduld trotz der wahrscheinlich immerwiederkehrenden Anfänger-Probleme

hoika 23. Jun 2009 09:15

Re: MYSQL-Fehler nicht mit 'try ... finally' abzufangen?
 
Hallo,

und schnell noch den "Folge-Fehler" erklärt ;)

try/except hält das Programm trotzdem an,
wenn man es aus der IDE startet.
Das könnte man in der IDE noch weg-konfigurieren,
würde ich aber nicht machen,
weil das die Fehlersuche sehr erschwert.

Standalone klappt das dann aber wie gewünscht.

Noch ein kleiner Tip.
Das finally macht trotzdem Sinn.
Delphi-Quellcode:
try
  with Query do
  begin
    SQL.Clear;
    SQL.Add('Select ... ');
    Open;
    try
      while not EOF do
      begin
       // Daten auslesen

        Next;
      end;
    finally
      Close;
    end;
  end;
except
 ; // nix tun
end;
Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz