Altova MapForce 2024 Enterprise Edition

L’API de MapForce renvoie les erreurs de deux manières différentes. Chaque méthode API renvoie un HRESULT. Cette valeur de renvoi informe l’appelant sur les défaillances pendant l’exécution de la méthode. Si l’appel a réussi, la valeur de renvoi est égale à S_OK. Les programmeurs C/C++ utilisent généralement HRESULT pour détecter des erreurs.

 

Visual Basic, les langages de scripts, et d’autres environnements de développement de haut niveau ne donnent pas accès au HRESULT de renvoi d’un appel COM. Ils utilisent le deuxième mécanisme de communication de l’erreur pris en charge par l’API de MapForce, l’interface IErrorInfo. Si une erreur se produit, l’API crée un nouvel objet qui met en œuvre l’interface IErrorInfo. L’environnement de développement prend cette interface et remplit son propre mécanisme de communication d’erreur à base des informations fournies.

 

Le texte suivant décrit comment gérer les erreurs survenues depuis l’API de MapForce dans les différents environnements de développement.

 

Visual Basic

Une manière commune de gérer des erreurs dans Visual Basic est de définir un gestionnaire d’erreurs. Ce gestionnaire d’erreur peut être défini avec la déclaration Sur Erreur. Normalement, le gestionnaire affiche un message d’erreur et nettoie un peu pour éviter des références détachées et tout genre de fuites de ressources. Visual Basic remplit son propre objet Err avec des informations de l’interface IErrorInfo.

 

Sub Validate()
'placer les déclarations de variable ici
 
'définir le gestionnaire d’erreurs
On Error GoTo ErrorHandler
 
'si la génération échoue, l’exécution de programme continue à ErrorHandler :
objMapForce.ActiveDocument.GenerateXSLT()
 
'le code supplémentaire est mis ici
 
'quitter
Exit Sub
 
ErrorHandler :
MsgBox("Error: " & (Err.Number - vbObjectError) & Chr(13) &
"Description: " & Err.Description)
End Sub

 

JavaScript

La mise en œuvre de Microsoft de JavaScript (JScript) fournit un mécanisme « try-catch » pour gérer les erreurs soulevées par les appels COM. Il est très semblable à l’approche de VisualBasic dans le sens que vous déclarez également un objet d’erreur contenant les informations nécessaires.

 

function Generate() {
// veuillez insérer les déclarations de variable ici
 
try {
objMapForce.ActiveDocument.GenerateXSLT();
}
catch (Error) {
sError = Error.description;
nErrorCode = Error.number & 0xffff;
return false;
}
 
return true;
}

 

C/C++

C/C++ vous donne accès facilement à HRESULT de l’appel COM et à IErrorInterface.

 

HRESULT hr;
 
// Call GenerateXSLT() de MapForce API
if(FAILED(hr = ipDocument->GenerateXSLT()))
{
IErrorInfo *ipErrorInfo = Null;
 
if(SUCCEEDED(::GetErrorInfo(0, &ipErrorInfo)))
{
BSTR bstrDescr;
ipErrorInfo->GetDescription(&bstrDescr);
 
// gérer l’information d’erreur
wprintf(L"Error message:\t%s\",bstrDescr);
::SysFreeString(bstrDescr);
 
// publier info d’erreur
ipErrorInfo->Release();
}
}

© 2018-2024 Altova GmbH