edv:prg:esql_c:example:errorhandle
ErrorHandle
Möchte man keine ausgefeilte (ESQL/C-)Fehlerbehandlung programmieren - für sehr kleine Programme durchaus sinvoll - kann ein einziger ErrorHandler (für alle Fehlersituationen) definiert werden.
Um diesen ErrorHandler den ESQL/C Librarys bekannt zu machen, reicht folgende Zeile (z.B. am Anfang der main()-Funktion):
EXEC SQL WHENEVER ERROR CALL errorhandler;
Für mehr Flexibilität definieren wir vorher die "errorhandler"-Funktion wie folgt:
#define errorhandler() _errorhandler_f_l(__FILE__, __LINE__)
Die eigentliche "errorhandler"-Funktion kann dann in etwa so aussehen:
#define MSG_LEN 256 void _errorhandler_f_l (char * datei, int zeile) { char meldung[MSG_LEN]; char meldung1[MSG_LEN]; int i; printf("ERROR in file %s, line %d:", datei, zeile); rgetlmsg(SQLCODE, meldung, MSG_LEN, &i); sprintf(meldung1, "SQL Error %d: %s", SQLCODE, meldung); printf(meldung1, sqlca.sqlerrm); if (sqlca.sqlerrd[1]) { rgetlmsg(sqlca.sqlerrd[1], meldung, MSG_LEN, &i); printf("ISAM Error %d: %s", sqlca.sqlerrd[1], meldung); } // if exit(SQLCODE); } // _errorhandler_f_l()
Das ganze führt dazu, daß das Programm bei Fehlern sofort abgebrochen wird. Vor dem Abbruch wird jedoch die "errorhandler"-Funktion aufgerufen, die ausführliche Informationen zur Ursache des Abbruchs mitteilt.
Stand: 12.01.2011
EOF
edv/prg/esql_c/example/errorhandle.txt · Zuletzt geändert: 2020/01/11 01:23 von 127.0.0.1