Tento článek ukazuje, co je příkaz try-catch a jak je implementován pomocí příkladu v programování v jazyce C.
Co je to příkaz Try Catch?
The Snaž se příkaz definuje kolekci příkazů, které mohou vytvořit výjimku. Když dojde k určitému druhu výjimky, je výjimka odeslána do bloku catch. Kompilátor buď vypíše chybové hlášení, nebo výjimka bude pokračovat v pohybu v zásobníku volání, dokud nebude adresována, pokud ji blok try/catch nezvládne.
Obecná syntaxe Zkus chytit prohlášení je uvedeno jako:
Snaž se {
/*
Vložte nějaký kód, který pravděpodobně bude generovat chyby
*/
}
chytit {
/*
Napište kód pro zpracování generovaných chyb.
*/
}
Co je to příkaz try-catch v C?
C nepodporuje zpracování výjimek a nemá k tomu vestavěný mechanismus. Můžete to však do určité míry simulovat pomocí setjmp a longjmp hovory. Bez způsobu, jak uvolnit paměť po návštěvě zásobníku, jsou mechanismy zpracování výjimek neefektivní a nebezpečné a C nemá garbage collector. Abychom uvolnili RAM, pravděpodobně bychom také potřebovali integrovat kontextové manažery.
Nyní, když provádíme vylepšení kódu, postupně vytvoříme řešení. Longjmp a setjmp jsou dvě funkce C, které mohou být poskytovány hlavičkovým souborem setjmp.h, který využijeme. Funkce setjmp přijímá proměnné typu jmp_buf a při přímém volání vrací 0. Když je stejná proměnná jmp_buf použita k vyvolání longjmp se dvěma proměnnými, vrátí funkce setjmp hodnotu, která odpovídá hodnotě druhého argumentu longjmp.
Příklad výše uvedené implementace je uveden jako:
#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 ( )
{
SNAŽ SE {
printf ( „Zkuste test výpisů \n ' ) ;
HÁZET;
printf ( 'Prohlášení by se nemělo objevit, protože blok THROW již vyvolal výjimku \n ' ) ;
}
CHYTIT {
printf ( 'Dostal výjimku \n ' ) ;
}
ENDTRY;
vrátit se 0 ;
}
Ve výše uvedeném programu C je ENDTRY funkce se používá pro zajištění uzavírací části bloku do-while.
Závěr
Pokud program během běhu narazí na výjimku kvůli chybě dat nebo kódování, “ Snaž se ' a ' chytit “ popsat, jak to spravovat. V Snaž se bloku kódu, dochází k výjimkám, když a chytit blok je místo, odkud chyby Snaž se bloky jsou nalezeny a zpracovány. Mnoho programovacích jazyků podporuje Zkus chytit blok, ale C ne. Tato příručka popisuje metodu použití příkazů try-catch v programování C.