Einzelne _com_error Exception catchen?
-
Hallo,
habe ein kleines Problem, vielleicht weiß einer von euch ja Hilfe :=)
Ich habe eine Anwendung, die versucht sich über ADO & LDAP-Server zu authentifizieren. Bei falschem Usernamen oder Passwort wirft die Anwendung eine _com_error Exception (genauer: DB_SEC_E_PERMISSIONDENIED).
Wie kann ich diese nun einzeln verwerten oder auswerten?
If Anweisungen im catch Teil sind ja nicht benutzbar...
Die Anwendung soll dann einfach eine MessageBox ausgeben, dass Username oder Passwort falsch sind.
momentan sieht die Catch-Anweisung so aus:
catch( _com_error &e ) { _bstr_t bstrSource(e.Source()); _bstr_t bstrDescription(e.Description()); TRACE( "Exception thrown for classes generated by #import" ); TRACE( "\tCode = %08lx\n", e.Error()); TRACE( "\tCode meaning = %s\n", e.ErrorMessage()); TRACE( "\tSource = %s\n", (LPCTSTR) bstrSource); TRACE( "\tDescription = %s\n", (LPCTSTR) bstrDescription); }
sollte diese Funktionalität beibehalten, und eben nur wenn e = DB_SEC_E_PERMISSIONDENIED eine MessageBox anzeigen.
Ach ja: die Ausgabe sieht dann in etwa so aus
Nicht abgefangene Ausnahme in TEST Final LDAP ADO.exe (KERNEL32.DLL): 0xE06D7363: Microsoft C++ Exception. Exception thrown for classes generated by #import Code = 80040e09 Code meaning = IDispatch error #3081 Source = Provider Description = Zugriff verweigert.
-
hatte da einen Denkfehler -> habs jetzt hinbekommen soweit erstmal....
wen es interessiert:
catch( _com_error &e ) { if (e.Error() == 0x80040e09) { MessageBox(NULL,"Fehler bei Username oder PW",MB_OK); } _bstr_t bstrSource(e.Source()); _bstr_t bstrDescription(e.Description()); TRACE( "Exception thrown for classes generated by #import" ); TRACE( "\tCode = %08lx\n", e.Error()); TRACE( "\tCode meaning = %s\n", e.ErrorMessage()); TRACE( "\tSource = %s\n", (LPCTSTR) bstrSource); TRACE( "\tDescription = %s\n", (LPCTSTR) bstrDescription); }