Altova MapForce 2024 Enterprise Edition

Die MapForce API gibt Fehler auf zwei verschiedene Arten zurück. Jede API-Methode gibt ein HRESULT zurück. Dieser Rückgabewert informiert den Caller über etwaige Fehlfunktionen während der Ausführung dieser Methode. Wenn der Call erfolgreich ausgeführt wurde, ist der Rückgabewert gleich S_OK. C/C++-Programmierer verwenden im Allgemeinen HRESULT zum Ausfindingmachen von Fehlern.

 

Visual Basic, Script-Sprachen und andere komplexe Entwicklungsumgebungen geben dem Programmierer keinen Zugriff auf das zurückgegebene HRESULT eines COM Call. Sie verwenden den zweiten Mechanismus zur Auslösung von Fehlern, der von der MapForce API unterstützt wird, die IErrorInfo Schnittstelle. Wenn ein Fehler auftritt, erstellt die API ein neues Objekt, das die IErrorInfo Schnittstelle implementiert. Die Entwicklungsumgebung nimmt diese Schnittstelle und befüllt ihren Fehlerbehandlungsmechanismus mit den erhaltenen Informationen.

 

Im folgenden Text wird beschrieben, wie man von der MapForce API ausgelöste Fehler in verschiedenen Entwicklungsumgebungen behandelt.

 

VisualBasic

Eine häufige Methode zur Fehlerbehandlung in Visual Basic ist, einen Fehler-Handler zu definieren. Dieser Fehler-Handler kann mit der On Error Anweisung definiert werden. Normalerweise zeigt der Fehler-Handler eine Fehlermeldung an und bereinigt den Code um überflüssige Referenzen und alle Arten von Resource Leaks zu vermeiden. Visual Basic befüllt sein eigenes Err Objekt mit den Informationen aus der IErrorInfo Schnittstelle.

 

 

 

Sub Validate()
'place variable declarations here
 
'set error handler
On Error GoTo ErrorHandler
 
'if generation fails, program execution continues at ErrorHandler:
 objMapForce.ActiveDocument.GenerateXSLT()
 
'additional code comes here
 
'exit
Exit Sub
 
 ErrorHandler:
MsgBox("Error: " & (Err.Number - vbObjectError) & Chr(13) &
    "Description: " & Err.Description)
End Sub

 

JavaScript

Die Microsoft Implementierung von JavaScript (JScript) bietet einen try-catch Mechanismus zur Behandlung von Fehlern, die von COM Calls ausgegeben werden. Er ähnelt der Methode von VisualBasic insofern, als ein Fehlerobjekt deklariert wird, das die nötigen Informationen enthält.

 

function Generate() {
  // please insert variable declarations here
 
  try {
       objMapForce.ActiveDocument.GenerateXSLT();
   }
  catch (Error) {
       sError = Error.description;
       nErrorCode = Error.number & 0xffff;
      return false;
   }
 
  return true;
}

 

C/C++

C/C++ gibt Ihnen einfachen Zugriff auf das HRESULT des COM Call und das IErrorInterface.

 

  HRESULT hr;
 
  // Call GenerateXSLT() from the MapForce API
  if(FAILED(hr = ipDocument->GenerateXSLT()))
  {
    IErrorInfo *ipErrorInfo = Null;
 
    if(SUCCEEDED(::GetErrorInfo(0, &ipErrorInfo)))
    {
        BSTR   bstrDescr;
        ipErrorInfo->GetDescription(&bstrDescr);
 
        // handle Error information
        wprintf(L"Error message:\t%s\",bstrDescr);
        ::SysFreeString(bstrDescr);
 
        // release Error info
        ipErrorInfo->Release();
    }
  }

 

© 2018-2024 Altova GmbH