Hvordan håndtere feil på C -språk

Hvordan håndtere feil på C -språk
C er et sterkt språk for programmering som ofte brukes i oppretting av systemprogramvare, innebygde enheter, så vel som operativsystemer. Håndtering av feil i C, derimot, kan være en vanskelig oppgave for de som ikke er kompetente programmerere. I det følgende avsnittet skal vi se på noen grunnleggende tilnærminger for å håndtere feil i C -programmering.

Hvordan håndtere feil på C -språk

Det er vanligvis to typer feil som finnes i C -programmering, som er som følger:

  • Syntaksfeil
  • Kjøretidsfeil

Hva er syntaksfeil

Syntaksfeil er forårsaket av feil syntaks i koden, og kompilatoren kan lett oppdage dem under kompileringsprosessen. For å unngå syntaksfeil, er det bedre å forstå de grunnleggende syntaksreglene for C -programmering.

Hva er kjøretidsfeil

Kjøretidsfeil oppstå når programmet utføres og kan forårsake forskjellige problemer som minnelekkasjer, segmenteringsfeil og feil bruk av pekere.

Hvordan håndtere feil

For å håndtere disse feilene, må vi forstå hovedårsaken bak forekomsten av denne typen feil, slik at vi deretter kan adressere dem deretter.

I C kan man bruke integrerte feilkorreksjonsrutiner for å håndtere feil. C-språk gir flere innebygde funksjoner som kan bidra til å identifisere og fikse feil. Følgende er listen over håndteringsfunksjoner du kan bruke i C -programmering:

  • Bruke Perror () -funksjon
  • Ved hjelp av Sterror -funksjon
  • Bruke Exit () -funksjon
  • Bruker påstand () -funksjon

1: Bruke Perror () -funksjon

Perror () er en innebygd funksjon i C-programmering som brukes til å skrive ut en feilmelding på standard feilutgang (STDERR) basert på feilkoden satt av en tidligere funksjonssamtale som har mislyktes. Hvis det er en streng og ikke er null, er den skrevet før en feiltekst. For eksempel, hvis du jobber med filer og en filoperasjon mislykkes, kan du bruke Perror () Funksjon for å skrive ut en feilmelding på standardfeilutgangen:

#inkludere
#inkludere
#inkludere
int main ()
Fil *fp;
fp = fopen ("no_file.txt "," r ");
if (fp == null)
printf ("Antall en feil: %d \ n", errno);
Perror ("Feilen er:");

Ovennevnte C definerer Main () -funksjonen som prøver å åpne en ikke-eksisterende fil i lesemodus ved hjelp av fopen () funksjon. fopen () gir null og skaper den globale errno -verdien fordi filen mangler. Programmet skriver deretter ut feilnummeret ved hjelp av errno og en feilmelding ved hjelp av Perror ().

Produksjon

2: Bruke strerror () -funksjon

De strekk () Funksjon er en innebygd funksjon for feilhåndtering som brukes til å hente en menneskelig lesbar feilmelding for en gitt feilkode. Errno Global -variabelen brukes vanligvis som feilkodeinngangen til strekk () funksjon. Når en feil oppstår under utførelsen av et program, settes feilkoden vanligvis til en spesifikk verdi av systemet eller bibliotekfunksjonen som oppdaget feilen. Denne feilkoden kan deretter brukes til å slå opp den tilsvarende feilmeldingen ved å bruke strekk () funksjon.

De strekk () Funksjon leverer en null-terminert streng som inneholder en advarselsmelding for den spesifiserte feilkoden. Denne feilmeldingen kan skrives ut på konsollen eller vises til brukeren for å gi informasjon om årsaken til feilen.

#inkludere
#inkludere
#inkludere
int main ()
Fil *fp = fopen ("no_file.txt "," v ");
if (fp == null)
printf ("feil oppstår i en åpningsfil: %s \ n", strerror (errno));

Ovennevnte kode definerer Main () -funksjonen som prøver å åpne en ikke-eksisterende fil i “V” -modus ved bruk av fopen () funksjon. fopen () sendes ut null og oppdaterer den globale errno -indikatoren fordi filen som ble åpnet ikke er til stede. Programmet skriver deretter ut feilmeldingen ved hjelp av strekk () Funksjon for å konvertere feilkoden i errno til en menneskelig lesbar feilmelding.

Produksjon

3: Bruke Exit () -funksjon

De exit() Funksjon er en annen nyttig måte å brukes til feilhåndtering som avslutter programmet umiddelbart med en spesifisert exit -status. Når programmet ikke kan fortsette på grunn av en dødelig feil eller en eksepsjonell situasjon, avslutter det det.

Exit () -metoden godtar et heltallinngang som representerer programmets utgangstilstand. En verdi på null indikerer en akseptabel avslutning, men ikke-nullverdier indikerer en feil eller avvikende avslutning.

#inkludere
#inkludere
int main ()
Fil *fil = fopen ("no_file.txt "," z ");
hvis (!fil)
printf ("Feil: kunne ikke åpne fil \ n");
Avslutt (1);

Ovennevnte program åpner en fil som heter "ingen fil.tekst" I 'Z' -modus. Hvis filen ikke blir funnet, vil den skrive ut en feilmelding og avslutte programmet ved hjelp av exit() funksjon med en statuskode på 1.

Produksjon

4: Bruke påstand () -funksjon

De hevde () Funksjon er et nyttig feilsøkingsverktøy for feilhåndtering under programutviklingen. Det gjør at utviklere kan fange og håndtere logiske eller programmeringsfeil som kan føre til udefinert atferd eller programkrasj.

Når du bruker hevde () funksjon, et logisk uttrykk blir gitt som et argument. Ingenting skjer hvis uttalelsen evaluerer til sant, og programmet fortsetter som normalt. Imidlertid, hvis uttrykket evaluerer til usant, hevde () Funksjon skriver ut en feilmelding til konsollen og avslutter programmet umiddelbart.

#inkludere
#inkludere
int main ()
int a = 5;
hevde (a == 10);
printf ("a er %d \ n", a);
retur 0;

I koden ovenfor brukes påståelsesfunksjonen for å sjekke om verdien av a er lik 10. Hvis A ikke er lik 10, vil programmet stoppe og vise en feilmelding. Hvis A er lik 10, vil programmet fortsette å kjøre normalt og skrive ut verdien av x.

Produksjon

Konklusjon

C gir flere funksjoner for feilhåndtering som programmerere kan bruke for å forbedre påliteligheten og robustheten til programmene sine. Disse funksjonene inkluderer Perror (), strerror (), exit () og hevde (). Når du bruker disse funksjonene, er det viktig å følge beste praksis for feilhåndtering, for eksempel å sjekke returverdier fra funksjoner og håndtere feil på en måte som ikke går ut over sikkerheten eller stabiliteten til programmet.