Benutzer-Werkzeuge

Webseiten-Werkzeuge


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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki