La interfaz de intermediario de emite la excepción cciThrowExceptionW y utiliza los argumentos especificados como datos de excepción.
void cciThrowExceptionW( int* returnCode, CCI_EXCEPTION_TYPE type, const char* file, int line, const char* function, const CciChar* messageSource, int messageNumber, const CciChar* traceText, ... );
El último argumento de esta lista debe ser (Ccichar*)0.
Ninguno. Si se produce un error, el parámetro returnCode indica la razón del mismo.
void raiseExceptionWithBroker(CciChar* helpfulText,
char* file, /* archivo de origen anómalo */
int line, /* línea en archivo anterior */
char* func /* función en archivo anterior */
){
int rc = CCI_SUCCESS;
/* Definir el nombre de catálogo de mensajes */
const char* catalog = "BIPv600";
/* Convertir el nombre de catálogo en caracteres ampliados.
* BIP_DEF_COMP_CCSID es UTF-8 en distribuidos y LATIN1 en z/OS
*/
int maxChars = strlen(catalog)+1;
CciChar* wCatalog =(CciChar*)malloc(maxChars*sizeof(CciChar));
cciMbsToUcs(&rc, catalog, wCatalog, maxChars, BIP_DEF_COMP_CCSID);
/* Las líneas anteriores quizá hayan fallado, pero ya se está generando una excepción,
* por lo que rc ahora se establece en satisfactorio. */
rc = CCI_SUCCESS;
/* Genera la excepción. La explicación se añadirá como traceText y
* como una inserción en el mensaje
*/
cciThrowExceptionW(&rc,
CCI_FATAL_EXCEPTION,
file, line, func,
wCatalog, BIP2111,
helpfulText,
helpfulText,
(CciChar*)0
);
/* Las líneas anteriores quizá hayan fallado, pero ya se está generando una excepción,
* por lo que el valor de rc no es importante. */
}