Ako používať príkazy Try Catch v C

Ako Pouzivat Prikazy Try Catch V C



Slová „skúsiť“ a „chytiť“ popisujú, čo robiť, keď program narazí na výnimku z dôvodu problému s kódom alebo údajmi. Výnimky sa riešia v a skúste blok kódu. Bloky catch sa používajú na nájdenie a spracovanie výnimiek z blokov try. Mnohé programovacie jazyky vrátane Pythonu, C++ a JavaScriptu zahŕňajú Skús chytiť Vyhlásenia.

Tento článok ukazuje, čo je to príkaz try-catch a ako sa implementuje na príklade programovania v jazyku C.

Čo je to príkaz Try Catch?

The skúste príkaz definuje kolekciu príkazov, ktoré môžu vytvoriť výnimku. Keď dôjde k špecifickému druhu výnimky, blok catch je miesto, kde sa výnimka odošle. Kompilátor buď vydá chybové hlásenie, alebo výnimka bude pokračovať v postupovaní v zásobníku hovorov, kým nebude adresovaná, ak ju blok try/catch nedokáže spracovať.







Všeobecná syntax súboru Skús chytiť vyhlásenie je uvedené ako:



skúste {
/*
Vložte nejaký kód, ktorý pravdepodobne spôsobí chyby
*/
}
chytiť {
/*
Napíšte kód pre spracovanie vygenerovaných chýb.
*/
}

Čo je to príkaz try-catch v jazyku C?

C nepodporuje spracovanie výnimiek a nemá na to zabudovaný mechanizmus. Môžete to však do určitej miery simulovať pomocou setjmp a longjmp hovory. Bez spôsobu uvoľnenia pamäte po návšteve zásobníka sú mechanizmy spracovania výnimiek neefektívne a nebezpečné a C nemá garbage collector. Na uvoľnenie pamäte RAM by sme pravdepodobne potrebovali integrovať aj kontextových manažérov.



Teraz, keď robíme vylepšenia kódu, postupne vytvoríme riešenie. Longjmp a setjmp, sú dve funkcie C, ktoré môže poskytnúť hlavičkový súbor setjmp.h, ktorý využijeme. Funkcia setjmp akceptuje premenné typu jmp_buf a pri priamom volaní vráti 0. Keď sa rovnaká premenná jmp_buf použije na vyvolanie longjmp s dvoma premennými, funkcia setjmp vráti hodnotu, ktorá sa zhoduje s hodnotou druhého argumentu longjmp.





Príklad vyššie uvedenej implementácie je uvedený ako:

#include
#include
#define TRY do { jmp_buf buf_state; if ( !setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} while(0)
#define THROW longjmp(buf_state, 1)
int main ( )
{
VYSKÚŠAJTE {
printf ( „Skúste testovanie výrokov \n ' ) ;
HODIŤ;
printf ( „Vyhlásenie by sa nemalo objaviť, keďže blok THROW už vyhodil výnimku \n ' ) ;
}
CHYŤAŤ {
printf ( 'Dostal výnimku \n ' ) ;
}
ENDTRY;
vrátiť 0 ;
}

Vo vyššie uvedenom programe C je ENDTRY funkcia sa používa na poskytnutie uzatváracej časti bloku do-while.



Záver

Ak program počas spustenia narazí na výnimku z dôvodu chyby údajov alebo kódovania, “ skúste “ a „ chytiť “ popíšte, ako to spravovať. V skúste bloku kódu, výnimky sa vyskytujú pri a chytiť blok je odkiaľ chyby skúste bloky sú nájdené a spracované. Mnoho programovacích jazykov podporuje Skús chytiť blok, ale C nie. Táto príručka opísala metódu použitia príkazov try-catch v programovaní C.