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 = "BIPmsgs";
/* 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_USER_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. */
}