You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

The LMX_GetErrorMessage function retrieves a NULL-terminated string for the last LM-X function call that occurred.

Prototype

const char * LMX_GetErrorMessage
(
   LMX_HANDLE LmxHandle
);

Parameters

LmxHandle
[in/out] LM-X handle.

Return values

The return value is a pointer to a NULL-terminated string that contains descriptive text for the error code.

Remarks

This function returns a detailed message for the last LM-X function call that occurred.

The message includes the feature name, internal error code, and context-specific error whenever relevant. Typically, the context-specific error and internal error code are used only by X-Formation for support purposes.

Example:

LM-X Error: (Internal: 33 Feature: f1)
Feature not found
For further information go to http://www.x-formation.com

The pointer returned is guaranteed to be valid only until the next function call that uses the LmxHandle parameter. Accordingly, it is recommended not to store the pointer.

Note: You cannot call LMX_GetErrorMessage from the heartbeat callback functions (see Heartbeats and LMX_SetOption). Instead, you may call LMX_GetErrorMessageSimple.

The following example shows an error caused by checking out a non-existent feature. It also shows information contained in the LMX_ERROR_INFO structure and calls an exit() function.

#include <lmx.h>
#include <stdio.h>

LMX_HANDLE h;

int main() {
  LMX_STATUS s;
  
  exit_on_error(LMX_Init(&h));
  if ((s = LMX_Checkout(h,"nonExistingFeature", 1, 1, 1)) != LMX_SUCCESS) {
    const LMX_ERROR_INFO* ePtr = LMX_GetError(h);
    fprintf(stderr, "Status: %s\n", LMX_GetErrorMessageSimple(s));
    fprintf(stderr, "Line: %d\n", ePtr->nInternal);
    fprintf(stderr, "Error code: %d\n", ePtr->nContext);
    fprintf(stderr, "Description: %s\n", ePtr->szDescription);
    fprintf(stderr, "Feature: %s\n", ePtr->szFeatureName);
    fflush(stderr);
    exit(1);
  }
  return 0;
}


  • No labels