Come gestire gli errori in lingua C

Come gestire gli errori in lingua C
C è un linguaggio forte per la programmazione che viene spesso utilizzata nella creazione di software di sistema, dispositivi incorporati e sistemi operativi. Gestire gli errori in C, d'altra parte, può essere una faccenda difficile per coloro che non sono programmatori competenti. Nella sezione seguente, esamineremo alcuni approcci di base per affrontare gli errori nella programmazione C.

Come gestire gli errori in lingua C

Esistono generalmente due tipi di errori nella programmazione C, che sono i seguenti:

  • Errori di sintassi
  • Errori di runtime

Quali sono gli errori di sintassi

Errori di sintassi sono causati da una sintassi errata nel codice e il compilatore può facilmente rilevarli durante il processo di compilazione. Per evitare errori di sintassi, è meglio comprendere le regole di sintassi di base della programmazione C.

Quali sono gli errori di runtime

Errori di runtime si verificano quando il programma viene eseguito e può causare vari problemi come perdite di memoria, guasti di segmentazione e utilizzo errato di puntatori.

Come gestire gli errori

Per gestire questi errori, dobbiamo capire il motivo principale alla base del verificarsi di questi tipi di errori in modo che possiamo quindi affrontarli di conseguenza.

In C, si possono utilizzare le routine di correzione degli errori integrati per gestire gli errori. Il linguaggio C fornisce diverse funzioni integrate che possono aiutare a identificare e correggere errori. Quanto segue è l'elenco delle funzioni di gestione che è possibile utilizzare nella programmazione C:

  • Usando la funzione perror ()
  • Utilizzando la funzione Sterror
  • Utilizzo della funzione Exit ()
  • Utilizzo della funzione Assert ()

1: usando la funzione perror ()

Perror () è una funzione integrata nella programmazione C che viene utilizzata per stampare un messaggio di errore sull'output di errori standard (STDERR) in base al codice di errore impostato da una chiamata di funzione precedente che non è riuscita. Se è una stringa e non è nulla, è scritto prima di un testo di errore. Ad esempio, se si lavora con i file e un'operazione di file non è possibile utilizzare Perror () funzione per stampare un messaggio di errore sull'output di errore standard:

#includere
#includere
#includere
int main ()
File *fp;
fp = fopen ("no_file.txt "," r ");
if (fp == null)
printf ("Numero di un errore: %d \ n", errno);
Perror ("L'errore è:");

La C di cui sopra definisce la funzione principale () che tenta di aprire un file inesistente in modalità lettura utilizzando fopen () funzione. Fopen () dà null e crea il valore globale ERRNO perché manca il file. Il programma quindi stampa il numero di errore utilizzando ERRNO e un messaggio di errore utilizzando Perror ().

Produzione

2: Utilizzo della funzione Strerror ()

IL Strerror () La funzione è una funzione integrata per la gestione degli errori utilizzata per recuperare un messaggio di errore leggibile dall'uomo per un determinato codice di errore. La variabile Errno Global viene generalmente utilizzata come input del codice di errore per Strerror () funzione. Quando si verifica un errore durante l'esecuzione di un programma, il codice di errore viene generalmente impostato su un valore specifico per la funzione di sistema o libreria che ha rilevato l'errore. Questo codice di errore può quindi essere utilizzato per cercare il messaggio di errore corrispondente utilizzando il Strerror () funzione.

IL Strerror () La funzione fornisce una stringa con terminazione null che contiene un messaggio di avviso per il codice di errore specificato. Questo messaggio di errore può essere stampato sulla console o visualizzato all'utente per fornire informazioni sulla causa dell'errore.

#includere
#includere
#includere
int main ()
File *fp = fopen ("no_file.txt "," v ");
if (fp == null)
printf ("Errore si verifica in un file di apertura: %s \ n", Strerror (errno));

Il codice sopra definisce la funzione principale () che tenta di aprire un file inesistente in modalità "V" utilizzando fopen () funzione. fopen () emette null e aggiorna l'indicatore globale Errno perché il file aperto non è presente. Il programma stampa quindi il messaggio di errore utilizzando Strerror () funzione per convertire il codice di errore nell'errno in un messaggio di errore leggibile dall'uomo.

Produzione

3: usando la funzione exit ()

IL Uscita() La funzione è un altro modo utile da utilizzare per la gestione degli errori che termina immediatamente il programma con uno stato di uscita specificato. Quando il programma non può continuare a causa di un errore fatale o di una situazione eccezionale, lo termina.

Il metodo Exit () accetta un input intero che rappresenta lo stato di uscita del programma. Un valore zero indica una risoluzione accettabile, ma i valori diversi da zero indicano un errore o una risoluzione aberrante.

#includere
#includere
int main ()
File *file = fopen ("no_file.txt "," z ");
Se (!file)
printf ("errore: impossibile aprire file \ n");
uscita (1);

Il programma sopra apre un file denominato "nessun file.TXT" in modalità 'z'. Se il file non viene trovato, stampa un messaggio di errore e termina il programma utilizzando il Uscita() funzione con un codice di stato di 1.

Produzione

4: Utilizzo della funzione Assert ()

IL affermare() La funzione è un utile strumento di debug per la gestione degli errori durante lo sviluppo del programma. Consente agli sviluppatori di catturare e gestire errori logici o di programmazione che potrebbero portare a comportamenti non definiti o arresti di programma.

Quando si utilizza il affermare() funzione, un'espressione logica viene passata come argomento. Non succede nulla se l'affermazione valuta al vero e il programma procede normalmente. Tuttavia, se l'espressione valuta a false, il affermare() La funzione stampa un messaggio di errore sulla console e termina immediatamente il programma.

#includere
#includere
int main ()
int a = 5;
assert (a == 10);
printf ("a is %d \ n", a);
restituzione 0;

Nel codice sopra, la funzione Assert viene utilizzata per verificare se il valore di A è uguale a 10. Se A non è uguale a 10, il programma si fermerà e visualizzerà un messaggio di errore. Se a è uguale a 10, il programma continuerà a funzionare normalmente e stampare il valore di x.

Produzione

Conclusione

C fornisce diverse funzioni per la gestione degli errori che i programmatori possono utilizzare per migliorare l'affidabilità e la robustezza dei loro programmi. Queste funzioni includono Perror (), Strerror (), Exit () E affermare(). Quando si utilizzano queste funzioni, è importante seguire le migliori pratiche per la gestione degli errori, come il controllo dei valori di restituzione dalle funzioni e la gestione degli errori in un modo che non compromette la sicurezza o la stabilità del programma.