Exemple des propriétés Description, HelpContext, HelpFile, NativeError, Number, Source, et SQLState (VC++)
Cet exemple déclenche une erreur, l’intercepte et affiche les propriétés Description, HelpContext, HelpFile, NativeError, Number, Source et SQLState de l’objet Error résultant.
// BeginDescriptionCpp.cpp
// compile with: /EHsc
#import "msado15.dll" no_namespace rename("EOF", "EndOfFile")
// Function declarations
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
void DescriptionX();
void PrintProviderError(_ConnectionPtr pConnection);
void PrintComError(_com_error &e);
int main() {
if (FAILED(::CoInitialize(NULL)))
return -1;
DescriptionX();
::CoUninitialize();
}
void DescriptionX() {
// Define ADO object pointers. Initialize pointers on define. These are in the ADODB:: namespace
_ConnectionPtr pConnection = NULL;
ErrorPtr errorLoop = NULL;
// Define Other Variables
HRESULT hr = S_OK;
try {
// Intentionally trigger an error. open connection
TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
if (FAILED(hr = pConnection->Open("Nothing", "", "", adConnectUnspecified))) {
_com_issue_error(hr);
exit(1);
}
// Cleanup object before exit.
pConnection->Close();
}
catch(_com_error) {
// Pass a connection pointer.
PrintProviderError(pConnection);
}
}
void PrintProviderError(_ConnectionPtr pConnection) {
// Define Other Variables
HRESULT hr = S_OK;
_bstr_t strError;
ErrorPtr pErr = NULL;
try {
// Enumerate Errors collection and display properties of each Error object.
long nCount = pConnection->Errors->Count;
// Collection ranges from 0 to nCount - 1.
for ( long i = 0 ; i < nCount ; i++ ) {
pErr = pConnection->Errors->GetItem(i);
printf("Error #%d\n", pErr->Number);
printf(" %s\n", (LPCSTR)pErr->Description);
printf(" (Source: %s)\n", (LPCSTR)pErr->Source);
printf(" (SQL State: %s)\n", (LPCSTR)pErr->SQLState);
printf(" (NativeError: %d)\n", (LPCSTR)pErr->NativeError);
if ((LPCSTR)pErr->GetHelpFile() == NULL)
printf("\tNo Help file available\n");
else {
printf("\t(HelpFile: %s\n)" ,pErr->HelpFile);
printf("\t(HelpContext: %s\n)" , pErr->HelpContext);
}
}
}
catch(_com_error &e) {
// Notify the user of errors if any.
PrintComError(e);
}
}
void PrintComError(_com_error &e) {
// Notify the user of errors if any.
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
// Print Com errors.
printf("Error\n");
printf("\tCode = %08lx\n", e.Error());
printf("\tCode meaning = %s", e.ErrorMessage());
printf("\tSource = %s\n", (LPCSTR) bstrSource);
printf("\tDescription = %s\n", (LPCSTR) bstrDescription);
}
Voir aussi
Description, propriété
Error, objet
HelpContext, HelpFile, propriétés
HelpContext, HelpFile, propriétés
NativeError, propriété (ADO)
Number, propriété (ADO)
Source, propriété (objet Error ADO)
SQLState, propriété
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour