Functions | |
void | LPC_GestioneErrore (int ErrorCode, char *Func, char *Msg) |
Stampa l'errore. |
|
Stampa l'errore. Scrive un codice di errore, la funzione chiamante e un messaggio di errore. L'errore viene stampato su stderr. Il parametro ErrorCode è il codice di errore. Func e' il nome della funzione che sta intercettando l'errore e Msg e' il messaggio di errore.
Da notare che Func non è il nome della funzione che ha generato un errore, ma il nome della funzione che lo ha ricevuto. I codici di errore delle funzioni da implementare sono già definiti in LPC_Include.h Tutti i codice di errore sono negativi. Esempio di gestione dell'errore: int Insert() { .... if (NumFields < 0) { char Err[256]; (void) sprintf(Err, "Errore parametro NumFields negativo"); LPC_GestioneErrore(LPC_BAD_ARG, "Insert", Err); < Liberare tutta la memoria allocata in questa funzione > return(LPC_BAD_ARG); } .... } Esempio di gestione dell'errore su allocazione memoria: int Insert() { .... buf = calloc(10, sizeof(long)); if (!buf) { char Err[256]; (void) sprintf(Err, "Errore allocazione memoria"); LPC_GestioneErrore(LPC_NO_MEMORY, "Insert", Err); < Liberare tutta la memoria allocata in questa funzione > return(LPC_NO_MEMORY); } .... } Esempio di gestione dell'errore ritornato da una chiamata ad una funzione di sistema: int Insert() { .... ret = fwrite(buffer, sizeof(char), len, fp); if (ret != len) { char Err[256]; (void) sprintf(Err, "Errore di sistema [%d] in scrittura su file:[%s]", errno, strerror(errno)); LPC_GestioneErrore(LPC_ERR_WRITE, "Insert", Err); < Liberare tutta la memoria allocata in questa funzione > return(LPC_ERR_WRITE); } .... } Esempio di gestione errore per una chiamata ad una funzione interna: int Insert() { ... ret = GetDBFInfo(handle, &DBFInfo); if (ret != LPC_OK) { char Err[256]; (void) sprintf(Err, "Errore chiamata alla GetDBFInfo:[%d]", ret); LPC_GestioneErrore(ret, "Insert", Err); return(ret); } .... }
|