Kako uporabljati izjave Try Catch v C

Kako Uporabljati Izjave Try Catch V C



Besedi »poskusiti« in »ujeti« opisujeta, kaj storiti, ko program naleti na izjemo zaradi težave s kodo ali podatki. Izjeme se obravnavajo v a poskusi blok kode. Bloki catch se uporabljajo za iskanje in obravnavanje izjem iz poskusnih blokov. Številni programski jeziki, vključno s Pythonom, C++ in JavaScript, vključujejo poskusi-ulovi izjave.

Ta članek na primeru programiranja C prikazuje, kaj je stavek try-catch in kako se izvaja.

Kaj je izjava Try Catch?

The poskusi stavek definira zbirko stavkov, ki lahko ustvarijo izjemo. Ko se zgodi določena vrsta izjeme, je izjema poslana v bloku catch. Prevajalnik bo izdal obvestilo o napaki ali pa bo izjema še naprej potovala po klicnem skladu, dokler ni obravnavana, če je poskusni/ulovni blok ne uspe obravnavati.







Splošna sintaksa za poskusi-ulovi izjava je podana kot:



poskusi {
/*
Vstavite kodo, ki bo verjetno ustvarila napake
*/
}
ulov {
/*
Napišite kodo za obravnavanje ustvarjenih napak.
*/
}

Kaj je stavek try-catch v C?

C ne podpira obravnave izjem in nima vgrajenega mehanizma za to. Vendar pa lahko to do neke mere simulirate z uporabo setjmp in longjmp klice. Brez načina za sprostitev pomnilnika, ko je sklad obiskan, so mehanizmi za obravnavo izjem neučinkoviti in nevarni, C pa nima zbiralnika smeti. Da bi sprostili RAM, bi verjetno morali integrirati tudi upravitelje konteksta.



Zdaj, ko izboljšujemo kodo, bomo postopoma zgradili rešitev. Longjmp in setjmp sta dve funkciji C, ki ju lahko zagotovi glava datoteke setjmp.h, ki ju bomo uporabili. Funkcija setjmp sprejema spremenljivke tipa jmp_buf in vrne 0, ko je neposredno poklicana. Ko se ista spremenljivka jmp_buf uporabi za priklic longjmp z dvema spremenljivkama, funkcija setjmp vrne vrednost, ki se ujema z vrednostjo drugega argumenta longjmp.





Primer zgornje izvedbe je podan kot:

#include
#include
#define POSKUSI do { jmp_buf buf_state; if ( !setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} medtem ko(0)
#define THROW longjmp(buf_state, 1)
int main ( )
{
POSKUSI {
printf ( 'Poskusite s testiranjem izjave \n ' ) ;
VRŽI;
printf ( 'Izjava se ne bi smela pojaviti, saj je blok THROW že vrgel izjemo \n ' ) ;
}
UJEM {
printf ( 'Razumem izjemo \n ' ) ;
}
KONEC;
vrnitev 0 ;
}

V zgornjem programu C je KONEC funkcija se uporablja za zagotavljanje zaključnega dela bloka do-while.



Zaključek

Če program med izvajanjem naleti na izjemo zaradi napake v podatkih ali kodiranju, “ poskusi « in » ulov « opišite, kako ga upravljati. V poskusi blok kode, se pojavijo izjeme, medtem ko a ulov blok je od kod prihajajo napake poskusi bloki so najdeni in obravnavani. Številni programski jeziki podpirajo poskusi-ulovi blok, C pa ne. Ta priročnik opisuje metodo za uporabo stavkov try-catch v programiranju C.