Sådan bruges Try Catch Statements i C

Sadan Bruges Try Catch Statements I C



Ordene 'prøv' og 'fang' beskriver, hvad man skal gøre, når et program støder på en undtagelse på grund af et kode- eller dataproblem. Undtagelser håndteres i en prøve kodeblok. Catch-blokke bruges til at finde og håndtere undtagelser fra try-blokke. Mange programmeringssprog, herunder Python, C++ og JavaScript, inkluderer try-catch udsagn.

Denne artikel demonstrerer, hvad en try-catch-sætning er, og hvordan den implementeres ved hjælp af et eksempel i C-programmering.

Hvad er en Try Catch-erklæring?

Det prøve statement definerer en samling af udsagn, der kan skabe en undtagelse. Når en bestemt slags undtagelse sker, er catch-blokken det sted, hvor undtagelsen sendes. Compileren vil enten udsende en fejlmeddelelse, eller undtagelsen vil fortsætte med at rejse op i opkaldsstakken, indtil den er adresseret, hvis try/catch-blokken ikke klarer det.







Den generelle syntaks for try-catch udsagnet er givet som:



prøve {
/*
Indsæt noget kode, der sandsynligvis vil generere fejl
*/
}
fangst {
/*
Skriv en kode til håndtering af de genererede fejl.
*/
}

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

C understøtter ikke undtagelseshåndtering og har ikke en indbygget mekanisme til at gøre det. Du kan dog simulere dette til en vis grad ved hjælp af setjmp og longjmp opkald. Uden en måde at frigive hukommelse, når stakken er blevet besøgt, er undtagelseshåndteringsmekanismer ineffektive og usikre, og C har ikke en skraldeopsamler. For at frigøre RAM skal vi sandsynligvis også integrere kontekstadministratorer.



Nu, mens vi laver kodeforbedringer, vil vi gradvist konstruere en løsning. Longjmp og setjmp, er to C-funktioner, der kan leveres af setjmp.h-headerfilen, vil blive brugt af os. Setjmp-funktionen accepterer variabler af typen jmp_buf og returnerer 0, når den kaldes direkte. Når den samme jmp_buf-variabel bruges til at kalde longjmp med to variabler, returnerer setjmp-funktionen en værdi, der matcher værdien af ​​longjmps andet argument.





Et eksempel på ovenstående implementering er givet som:

#include
#include
#define PRØV at gøre { jmp_buf buf_state; if (!setjmp(buf_state)) {
#define CATCH } andet {
#define ENDTRY }} mens(0)
#define THROW longjmp(buf_state, 1)
int main ( )
{
PRØVE {
printf ( 'Prøv statement test \n ' ) ;
KASTE;
printf ( 'Erklæring bør ikke vises, da THOW-blokken allerede har kastet undtagelsen ud \n ' ) ;
}
FANGST {
printf ( 'Fik undtagelse \n ' ) ;
}
ENDTRY;
Vend tilbage 0 ;
}

I ovenstående C-program er SLUTNING funktionen bruges til at levere den lukkede del af do-while-blokken.



Konklusion

Hvis et program støder på en undtagelse på grund af en data- eller kodningsfejl, mens det kører, ' prøve ' og ' fangst ” beskrive, hvordan man håndterer det. I en prøve kodeblok, undtagelser forekommer, mens en fangst blok er hvor fejl kommer fra prøve blokke findes og håndteres. Mange programmeringssprog understøtter try-catch blokere, men C'et gør det ikke. Denne vejledning beskrev en metode til at bruge try-catch-sætninger i C-programmering.