Slik bruker du Try Catch Statements i C

Slik Bruker Du Try Catch Statements I C



Ordene 'prøve' og 'fange' beskriver hva du skal gjøre når et program møter et unntak på grunn av et kode- eller dataproblem. Unntak håndteres i en prøve kodeblokk. Fangstblokker brukes til å finne og håndtere unntak fra prøveblokker. Mange programmeringsspråk, inkludert Python, C++ og JavaScript, inkluderer prøve-fange uttalelser.

Denne artikkelen viser hva en try-catch-setning er og hvordan den implementeres ved å bruke et eksempel i C-programmering.

Hva er en Try Catch-erklæring?

De prøve statement definerer en samling av utsagn som kan skape et unntak. Når en bestemt type unntak skjer, er catch-blokken der unntaket sendes. Kompilatoren vil enten sende ut en feilmelding eller unntaket vil fortsette å reise opp i anropsstakken til det er adressert hvis try/catch-blokken ikke klarer å håndtere det.







Den generelle syntaksen til prøve-fange uttalelsen er gitt som:



prøve {
/*
Sett inn en kode som sannsynligvis vil generere feil
*/
}
å fange {
/*
Skriv en kode til håndtering av genererte feil.
*/
}

Hva er en try-catch-erklæring i C?

C støtter ikke unntakshåndtering og har ikke en innebygd mekanisme for å gjøre det. Du kan imidlertid simulere dette til en viss grad ved å bruke setjmp og longjmp samtaler. Uten en måte å frigjøre minne når stabelen har blitt besøkt, er unntakshåndteringsmekanismer ineffektive og utrygge, og C har ikke en søppeloppsamler. For å frigjøre RAM vil vi sannsynligvis også trenge å integrere kontekstadministratorer.



Nå, mens vi gjør kodeforbedringer, vil vi gradvis konstruere en løsning. Longjmp og setjmp, er to C-funksjoner som kan leveres av setjmp.h-headerfilen vil bli brukt av oss. Setjmp-funksjonen godtar variabler av typen jmp_buf og returnerer 0 når den kalles direkte. Når den samme jmp_buf-variabelen brukes til å påkalle longjmp med to variabler, returnerer setjmp-funksjonen en verdi som samsvarer med verdien av longjmps andre argument.





Et eksempel på implementeringen ovenfor er gitt som:

#include
#include
#define PRØV å gjøre { jmp_buf buf_state; if (!setjmp(buf_state)) {
#define CATCH } annet {
#define ENDTRY }} mens(0)
#define THROW longjmp(buf_state, 1)
int main ( )
{
PRØVE {
printf ( 'Prøv statement-testing \n ' ) ;
KASTE;
printf ( 'Uttalelse skal ikke vises, siden THOW-blokken allerede har kastet unntaket \n ' ) ;
}
Å FANGE {
printf ( 'Fikk unntak \n ' ) ;
}
ENDTRY;
komme tilbake 0 ;
}

I det ovennevnte C-programmet er SLUTT funksjonen brukes for å gi den lukkende delen av do-while-blokken.



Konklusjon

Hvis et program støter på et unntak på grunn av en data- eller kodefeil mens det kjører, ' prøve ' og ' å fange ' beskrive hvordan du administrerer det. I en prøve kodeblokk, unntak forekommer mens en å fange blokken er hvor feilene kommer fra prøve blokker blir funnet og håndtert. Mange programmeringsspråk støtter prøve-fange blokkerer, men C-en gjør det ikke. Denne veiledningen beskrev en metode for å bruke try-catch-setninger i C-programmering.