Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Exception handling (https://www.delphipraxis.net/135994-exception-handling.html)

youuu 21. Jun 2009 19:20

Datenbank: MYSQL • Zugriff über: ODBC

Exception handling
 
Hi,

ich beschäftige mich gerade mit Exception

Ich möchte gerne eine Exception so abfangen.

Delphi-Quellcode:

  Except
    on e: EMySQLException do
    Showmessage('existiert bereits!');
E2003 Undeklarierter Bezeichner: 'EMySQLException'

himitsu 21. Jun 2009 19:30

Re: Exception handling
 
ist EMySQLException definiert und ist diese Definition auch im Namensraum dieser Stelle vorhanden?

youuu 21. Jun 2009 19:32

Re: Exception handling
 
Nein habe ich nicht, ich nahm an, da ich diese Exception ausgegeben wurde ich sie so verwenden kann.

Es geht darum keine Duplikate in Mysql zu speichern.

Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EMySqlException mit Meldung '
#23000Duplicate entry 'Test' for key 2'.

himitsu 21. Jun 2009 19:47

Re: Exception handling
 
Dann mußt du suchen, wo diese Exception-Klasse definiert ist und die entsprechende Unit in deine Uses-Liste aufnehmen.

youuu 21. Jun 2009 19:58

Re: Exception handling
 
Habe ich nun eingebunden allerdings wird das nun ignoriert

Delphi-Quellcode:
uses Mysqlerrors;
.
.
.

 Except
    on e: EMySQLException do
      Showmessage('Test existiert bereits!');
Fehler tritt auf, jedoch wird die Nachricht nicht raus gesand das es schon existiert sondern normal Exception Massage.

nachti1505 21. Jun 2009 20:19

Re: Exception handling
 
Wenn du dein Prog aus der Delphi-IDE startest, zeigt er immer erst die Default-Exception an. Drückst du nach Anzeige dieser Exception nochmals auf F9, kommt dein definierter Code zum tragen.

Beim Starten des Kompilat wird dann nur noch dein Exception-Handling durchgeführt.

Alternativ kannst du irgendwo in den Options das default-handling ausstellen (ist aber nicht empfehlenswert)!

youuu 21. Jun 2009 20:27

Re: Exception handling
 
Zitat:

Zitat von nachti1505
Wenn du dein Prog aus der Delphi-IDE startest, zeigt er immer erst die Default-Exception an. Drückst du nach Anzeige dieser Exception nochmals auf F9, kommt dein definierter Code zum tragen.

Beim Starten des Kompilat wird dann nur noch dein Exception-Handling durchgeführt.

Alternativ kannst du irgendwo in den Options das default-handling ausstellen (ist aber nicht empfehlenswert)!

Das weiß ich, allerdings wenn ich die .exe starte ist es genauso Showmessage wird ignoriert wenn die Exception auftritt und es wird nur die Exception Duplicate entry angezeigt.

Muetze1 21. Jun 2009 21:49

Re: Exception handling
 
Ist dann ganz simpel: Die Exception wird nicht in dem Codeabschnitt geworfen, den du mit try/except umschlossen hast. Also entweder ist es ein anderer MySQL Aufruf oder das ganze läuft asynchron ab und wird somit in einem anderen Thread geworfen...

sx2008 22. Jun 2009 01:51

Re: Exception handling
 
Oder die geworfene Exception gehört nicht zu der Klasse, die du erwartest.
Mit folgenden Code kannst du anzeigen zu welcher Klasse die Exception gehört.
Delphi-Quellcode:
Except
  on E: Exception do
    ShowmessageFmt('%s'#13#10'Class: %s', [E.Message, E.Classname]);

Muetze1 22. Jun 2009 06:30

Re: Exception handling
 
Zitat:

Zitat von sx2008
Oder die geworfene Exception gehört nicht zu der Klasse, die du erwartest.

Nun ja, er hat den gesamten Dialog kopiert und somit sollte das schon passen...

Zitat:

Zitat von youuu
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EMySqlException mit Meldung '
#23000Duplicate entry 'Test' for key 2'.



Alle Zeitangaben in WEZ +1. Es ist jetzt 13:01 Uhr.
Seite 1 von 2  1 2      

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