Diese Funktion ruft Diagnoseinformationen zur letzten generierten Ausnahmebedingung ab. Es werden Information zu der für den aktuellen Thread zuletzt generierten Ausnahmebedingung in einer CCI_EXCEPTION_ST-Ausgabestruktur zurückgegeben. Die benutzerdefinierte Erweiterung kann diese Funktion verwenden, um festzustellen, ob eine Fehlerbehebung erforderlich ist, wenn eine Dienstprogrammfunktion einen Fehlercode zurückgibt.
Diese Funktion können Sie aufrufen, wenn ein Dienstprogrammfunktions- oder Benutzerexit-Callback darauf hinweist, dass eine Ausnahmebedingung aufgetreten ist, indem Sie returnCode auf CCI_EXCEPTION setzen.
Sie dürfen cciGetLastExceptionData() nur aufrufen, wenn CCI_EXCEPTION angegeben ist; andernfalls gibt die Funktion unvorhersehbare Ergebnisse zurück.
Der Tracetext, der zur Ausnahmebedingung gehört, wird in char* umgewandelt, wenn char* US-ASCII ist. Wenn der Tracetext in einer anderen Sprache ist, missen Sie cciGetLastExceptionDataW und die zugehörige Struktur CCI_EXCEPTION_WIDE_ST verwenden, die den Tracetext im UTF-16-Format speichert.
Wenn die Ausnahmebedingung vom Broker oder von cciThrowExceptionW ausgegeben wurde, ist das Element traceText der Struktur CCI_EXCEPTION_ST eine leere Zeichenfolge.
void* cciGetLastExceptionData(
int* returnCode,
CCI_EXCEPTION_ST* exception_st);
Der Wert, der im Feld exception_st.messageNumber für Ausnahmen zurückgegeben wurde, die zu einer BIP-Ausnahmebedingungsnachricht führen, enthält die Nachrichtenstufe in den höheren Bytes und die BIP-Nachrichtennummer in den niedrigeren vier Bytes.
Keine. Wenn ein Fehler auftritt, gibt der Parameter returnCode die Fehlerursache an.
typedef struct exception_st {
int versionId; /* Versionskennung der Struktur */
int type; /* Typ der Ausnahmebedingung */
int messageNumber; /* Nachrichtennummer */
int insertCount; /* Anzahl an Nachrichteneinsätzen */
CCI_STRING_ST inserts[CCI_MAX_EXCEPTION_INSERTS];
/* Array der Nachrichtenimplementierungsbereiche */
const char* fileName; /* Quelle: Dateiname */
int lineNumber; /* Quelle: Zeilennummer in der Datei */
const char* functionName; /* Quelle: Funktionsname */
const char* traceText; /* Zur Ausnahmebedingung zugehöriger Tracetext */
CCI_STRING_ST objectName; /* Objektname */
CCI_STRING_ST objectType; /* Objekttyp */
} CCI_EXCEPTION_ST;
char msgnumTypeStr[64];
CCI_EXCEPTION_ST exception_st = malloc(sizeof(CCI_EXCEPTION_ST));
int rc = 0;
memset(&exception_st,0,sizeof(exception_st));
cciGetLastExceptionData(&rc, &exception_st);
sprintf(msgnumTypeStr, "MsgNum: %d Type: %d",
(exception_st.messageNumber & 0x0ffff),
(exception_st.type & 0x0f));