Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Was mache ich mit Exceptions der Klasse EOleException ??? (https://www.delphipraxis.net/19549-mache-ich-mit-exceptions-der-klasse-eoleexception.html)

geronilsmo 5. Apr 2004 12:05


Was mache ich mit Exceptions der Klasse EOleException ???
 
Hallo und Hilfe!!

Woher kommen bzw. wie entstehen die Exceptions der Klasse EOleException
und wie kann ich die beim Debuglauf unterbinden/ignorieren/behandeln?

Zur konkreten Situation:
========================
Auf meiner Form1 liegt eine TADOConnection-Komponente "ADOConn",
die ueber ihre Provider-Eigenschaft "OraOLEDB.Oracle"
eine 9i-Oracle-Datenbank - Verbindung herstellt.
Funktioniert auch! :thuimb:

-----------------------------------------------------------------------------
Delphi-Quellcode:
    ADOConn.ConnectionString := 'Provider=OraOLEDB.Oracle;'   +
                                 'Password=tiger;'             +
                                 'Persist Security Info=False;' +
                                 'User ID=SCOTT;'              +
                                 'Data Source=TEST;' ;
    ADOConn.Open;
-----------------------------------------------------------------------------

Im sich anschliessenden ConnectComplete-Ereignis der Komponente pruefe ich
den EventStatus, ob alles Ok (= esOK) oder Fehler (= esErrorsOccured): :warn:

-----------------------------------------------------------------------------
Delphi-Quellcode:
    procedure TForm1.ADOConnConnectComplete( Connection: TADOConnection;
                                             const Error: Error;
                                             var EventStatus: TEventStatus );
    begin
        if EventStatus = esErrorsOccured then
            MessageDlg(Error.Description, mtWarning, [mbCancel],0)
        else if EventStatus = esOK then
            MessageDlg('Verbindung erfolgreich', mtInformation, [mbOK],0);
    end;
-----------------------------------------------------------------------------

In der IDE jedoch verhaelt sich der Debugger echt zum ... :kotz:
Gibt der Oracle-Server einen Fehler zurueck (z.B. wg. falschem Passwort)
und der OnConnectComplete wird im Fehlerzweig korrekt und vollst. durchlaufen
(MessageDlg: 'ORA-01017: invalid username/password; logon denied'),
erhalte ich nach dem ganzen folgende Debugger-Meldung:

Zitat:

Benachrichtigung ueber Debugger-Exception

Im Projekt Projekt1.exe ist eine Exception der Klasse EOleException aufgetreten.
Meldung: 'ORA-01017: invalid username/password; logon denied'.
Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Es wird keine Exception im aktuellen ConnectComplete ausgeloest!
Zudem hat die Errors-Collection der Connection-Komponente einen Count von 0!

Meine Frage also: :gruebel:
=================
Wie krieg' ich den Debugger bzw. die IDE dazu, bei EOleExceptions weiterzulaufen
bzw. wie behandle ich diese BlackBox-Exceptions korrekt?

geronilsmo 6. Apr 2004 14:12

Re: Was mache ich mit Exceptions der Klasse EOleException ?
 
Hallo zusammen! Ich schon wieda :stupid:

Das Frage war ja primaer, wie man die Extra-Wurst-Meldung des Debuggers unterdruecken kann.

Falls jemand die Antwort schon wusste und bloss nicht antworten wollte: Pfui! :?

Falls sich jemand den Kopf zermartert hat: Danke, Du kannst jetzt aufhoeren! :mrgreen:

Ich hab' die Loesung nu gefunden:
Es ist eine Einstellungs-Option der IDE selbst.
(man muss ja nu nich alles wissen ...)


Wen's noch interessieren sollte:

Wenn man die Fehlerereignis-Behandlung selbst kontrollieren will,
aber vom uebereifrigen Debugger genervt wird
(der draengelt sich bei EOleExceptions ja immer dazwischen),
kann man eine vorhandene Liste von Exception-Typen,
die der Debugger IGNORIEREN soll (!!)
entsprechend erweitern:

Vorgehensweise (Delphi 7):

Menue "Tools"
--> Debugger-Optionen
--> Register-Tab "Sprach-Exceptions"

Dort findet sich die Liste mit Exceptions, die der Debugger ignoriert,
sowie ein Button "Hinzufuegen", ueber den sich das Eingabe-Fenster
"Sprach-Exception hinzufuegen" oeffnet.

Dort traegt man haendisch EOleException ein.

Nach OK-Click wird diese in die Liste uebernommen
und auch gleich das Haekchen gesetzt.

==> Ab jetzt haelt der Debugger bei EOleExceptions die Klappe.


Ich zumindest bin jetzt zufrieden ... :hello:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.

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