Altova UModel 2024 Professional Edition

Die UModel API gibt Fehler auf zwei unterschiedliche Arten zurück. Jede API-Methode gibt ein HRESULT zurück. Dieser Rückgabewert informiert den Aufrufer über etwaige Fehler, die während der Ausführung der Methode aufgetreten sind. Wenn der Aufruf erfolgreich war, ist der Rückgabewert gleich S_OK. C/C++-Programmierer verwenden im Allgemeinen HRESULT, um Fehler ausfindig zu machen.

 

In VisualBasic, Scripting-Sprachen und anderen komplexen Entwicklungsumgebungen hat der Programmierer keinen Zugriff auf das zurückgegebene HRESULT eines COM-Aufrufs. Es wird der zweite Fehlermeldungsmechanismus der UModel API verwendet, die IErrorInfo Schnittstelle. Bei Auftreten eines Fehlers erstellt die API ein neues Objekt, das die IErrorInfo Schnittstelle implementiert. Die Entwicklungsumgebung nimmt diese Schnittstelle und setzt die bereitgestellten Informationen in ihre eigenen Fehlerbehandlungsmechanismen ein.

 

Im folgenden Beispielcodefragment sehen Sie, wie mit Fehlern verfahren wird, die von der UModel API in unterschiedlichen Umgebungen ausgelöst werden.

 

VisualBasic

Eine gängige Methode zur Fehlerbehandlung in VisualBasic ist die Definition eines Error Handler. Dieser Error Handler kann mit der On Error Anweisung definiert werden. Normalerweise zeigt der Handler eine Fehlermeldung an und führt Cleanup-Funktionen durch, um überzählige Referenzen und jede Art unnötiger Ressoucenbeanspruchung zu vermeiden.

 

VisualBasic fü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 DoSomeWork fails, program execution continues at ErrorHandler:
 objUModel.ActiveDocument.DoSomeWork()
 
'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 durch COM-Aufrufe ausgelöst werden. Die Methode ist der VisualBasic-Methode insofern sehr ähnlich, als auch hier ein Fehlerobjekt deklariert wird, das die nötigen Informationen enthält.

 

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

 

C/C++

In C/C++ haben Sie einfachen Zugriff auf das HRESULT des COM-Aufrufs und die IErrorInterface.

 

  HRESULT hr;
 
  // Call DoSomeWork() from the UModel API
  if(FAILED(hr = ipDocument->DoSomeWork()))
  {
    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();
    }
  }

© 2017-2023 Altova GmbH