Paano Gamitin ang Try Catch Statement sa C

Paano Gamitin Ang Try Catch Statement Sa C



Ang mga salitang 'subukan' at 'huli' ay naglalarawan kung ano ang gagawin kapag ang isang programa ay nakatagpo ng isang pagbubukod dahil sa isang code o problema sa data. Ang mga pagbubukod ay pinangangasiwaan sa a subukan bloke ng code. Ginagamit ang mga catch block upang mahanap at mahawakan ang mga pagbubukod mula sa mga bloke ng pagsubok. Maraming mga programming language, kabilang ang Python, C++, at JavaScript, kasama subukan-huli mga pahayag.

Ang artikulong ito ay nagpapakita kung ano ang isang try-catch statement at kung paano ito ipinapatupad gamit ang isang halimbawa sa C programming.

Ano ang Try Catch Statement?

Ang subukan Ang pahayag ay tumutukoy sa isang koleksyon ng mga pahayag na maaaring lumikha ng isang pagbubukod. Kapag may nangyaring partikular na uri ng exception, ang catch block ay kung saan ipinapadala ang exception. Ang compiler ay maglalabas ng abiso ng error o ang pagbubukod ay magpapatuloy sa pag-akyat sa call stack hanggang sa ito ay matugunan kung ang try/catch block ay nabigo na mahawakan ito.







Ang pangkalahatang syntax ng subukan-huli ang pahayag ay ibinigay bilang:



subukan {
/*
Magpasok ng ilang code na malamang na bubuo ng mga error
*/
}
mahuli {
/*
Sumulat ng code para sa paghawak sa mga nabuong error.
*/
}

Ano ang isang try-catch Statement sa C?

Hindi sinusuportahan ng C ang paghawak ng exception at walang built-in na mekanismo para gawin ito. Gayunpaman, maaari mong gayahin ito sa ilang lawak gamit setjmp at longjmp mga tawag. Kung walang paraan upang mailabas ang memorya kapag nabisita na ang stack, ang mga mekanismo sa paghawak ng exception ay hindi mahusay at hindi ligtas, at ang C ay walang tagakolekta ng basura. Upang palayain ang RAM, malamang na kailangan din nating isama ang mga tagapamahala ng konteksto.



Ngayon, habang gumagawa kami ng mga pagpapahusay ng code, unti-unti kaming gagawa ng solusyon. Ang longjmp at setjmp, ay dalawang C function na maaaring ibigay ng setjmp.h header file na gagamitin namin. Ang setjmp function ay tumatanggap ng mga variable ng uri ng jmp_buf at nagbabalik ng 0 kapag ito ay direktang tinawag. Kapag ang parehong jmp_buf variable ay ginamit upang mag-invoke ng longjmp na may dalawang variable, ang setjmp function ay nagbabalik ng value na tumutugma sa value ng pangalawang argumento ng longjmp.





Ang isang halimbawa ng pagpapatupad sa itaas ay ibinigay bilang:

#include
#include
#define TRY do { jmp_buf buf_state; kung ( !setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} habang(0)
#define THROW longjmp(buf_state, 1)
int pangunahing ( )
{
SUBUKAN {
printf ( 'Subukan ang pagsubok ng pahayag \n ' ) ;
ihagis;
printf ( 'Hindi dapat lumabas ang pahayag, dahil ang THROW block ay naglabas na ng exception \n ' ) ;
}
HULI {
printf ( 'May Exception \n ' ) ;
}
ENDTRY;
bumalik 0 ;
}

Sa itaas na C program, ang ENDTRY Ang function ay ginagamit para sa pagbibigay ng pagsasara ng bahagi ng do-while block.



Konklusyon

Kung ang isang programa ay nakatagpo ng isang pagbubukod dahil sa isang data o coding error habang ito ay tumatakbo, ' subukan 'at' mahuli ” ilarawan kung paano ito pamamahalaan. Sa isang subukan block ng code, ang mga exception ay nagaganap habang a mahuli Ang block ay kung saan nagmula ang mga error subukan ang mga bloke ay matatagpuan at pinangangasiwaan. Maraming mga programming language ang sumusuporta sa subukan-huli block ngunit ang C ay hindi. Inilarawan ng gabay na ito ang isang paraan upang magamit ang mga pahayag ng try-catch sa C programming.