Paano Maipatupad ang Paghawak ng Exception sa C ++?



Tutulungan ka ng artikulong ito na maunawaan kung ano ang paghawak ng pagbubukod at kung paano ipatupad ang paghawak ng pagbubukod sa C ++ na may praktikal na pagpapakita.

Mga pagbubukod ay mga hindi normal na kondisyon sa panahon ng pagtakbo o oras ng pagtitipon. ay isang napaka-mahalagang konsepto sa c ++. Ipakilala ka ng artikulong ito sa pagbubukod ng paghawak sa C ++ kasama ang iba't ibang uri nito.

Saklaw ang artikulong ito sa artikulong ito,





Kaya't magsimula tayo noon,

Exception na Pangangasiwa Sa C ++

Mga Uri Ng Exception

Mayroong dalawang uri ng pagbubukod,



Pagpapatakbo ng oras Exception

Ito ay isang Exception na nahuli habang tumatakbo ang oras.

Compusion-time Exception



Ito ay isang Exception na nahuli sa oras ng pagtitipon.

Nagpapatuloy sa artikulong Pangangasiwa ng Exception na ito sa C ++,

Ano ang Paghawak ng Exception?

Ang mga error ay nakakagambala sa normal na pagpapatupad ng isang programa. Napakahalaga ng paghawak ng pagbubukod, at ito ang proseso ng paghawak ng mga pagkakamali o pagbubukod. Tinitiyak nito na ang pagpapatupad ng programa ay hindi maaapektuhan ng mga pagbubukod at dahan-dahang hinahawakan ang mga ito nang hindi nagdudulot ng anumang isyu sa pagpapatupad ng programa.

Kung isasaalang-alang mo ang paghawak ng pagbubukod, mayroong tatlong mga term na nauugnay dito,

Subukan mo

Ang code sa loob ng bloke na ito ay tulad ng isang trial code, na maaaring magtapon ng isang pagbubukod. Ang pagbubukod na ito ay nahuli sa loob ng catch block.

Mahuli

Ang code sa block na ito ay naisakatuparan kapag ang code sa mga try block ay nagtatapon ng isang pagbubukod.

pag-uri-uriin sa c ++

Magtapon

Ginagamit ang keyword na ito upang magtapon ng isang pagbubukod kapag nakatagpo ito. Ang pagbubukod ay ipinadala sa handler ng pagbubukod.

Syntax:

Ang code sa loob ng try block ay naisakatuparan. Kung mayroong isang error na nabuo, ang pagkahagis ng keyword ay nagtatapon ng pagbubukod sa handler ng pagbubukod, iyon ay, ang block block. Pagkatapos ay naisagawa ng catch block ang code, na nasa loob ng bloke nito, sa gayon paghawak ng pagbubukod.

Tingnan natin ang sample code para sa paghawak ng pagbubukod sa c ++

Sample Code

# isama ang paggamit ng namespace std subukan {// code for try throw & ldquoexception & rdquo} catch (exception) {// code for catch} int main () {int x = 1 try {cout<< 'Try Block: '<

Output:

Output - Exception na Pangangasiwa Sa C ++ - Edureka

Paliwanag

Ipinapakita ng programang ito ang paghawak ng pagbubukod. Mayroon kaming isang variable x, na kung saan ay nakatalaga ng isang halaga ng 1. Pagkatapos ay mayroon kaming pagsisimula ng try block. Sa bloke na ito, mayroon kaming isang kung pahayag na may kundisyon x<10.

Sa aming kaso, ang kundisyon ay totoo dahil ang x ay isa. Ang programa pagkatapos ay nagtatapon ng isang pagbubukod at ang control ay lumipat upang mahuli ang block. Isinasagawa namin ang kundisyon sa bahagi ng catch at lumabas sa bloke.

mahuli (...) {gastos<< 'Default Exceptionn'<

Panghuli, isinasagawa namin ang natitirang mga pahayag pagkatapos ng catch block at exit na programa.

Maaaring magkaroon ng maraming pahayag ng catch, depende sa bilang ng mga posibleng pagbubukod.

Nagpapatuloy sa artikulong Pangangasiwa ng Exception na ito sa C ++,

Pagkabigo ng Catch Block

Isaalang-alang ang nakaraang programa, kung sa halip na x ang magtapon ng keyword ay itinapon ang 'ABC' kung gayon, hindi maaasikaso ito ng function ng catch. Magpapakita ito ng isang error,

Maaari nating ipakita ang aming napanalunang mensahe ng error sa ganitong kaso.

Upang malutas ito, kailangan naming magdagdag ng isang default na function ng catch sa code upang hawakan ang mga nasabing isyu.

# isama ang paggamit ng namespace std int main () {int x = 1 try {cout<< 'Try Block: '<

Output:

Paliwanag:

Ang code na ito ay katulad ng dati. Ang pagbabago lamang ay ang pagbubukod na itinapon ay uri ng char. Nagreresulta ito sa aming catch function na walang silbi. Kaya nagsama kami ng isang default na pagpapaandar ng catch.

Kung wala sa mga pahayag ng catch ay tumutugma, pagkatapos ay ang default na catch ay naisakatuparan.

Maramihang Mga Block ng Catch

Maaaring may maraming mga bloke ng catch ng isang solong try block.

Narito ang isang halimbawa,

# isama ang paggamit ng namespace std int test (int a) {subukan {kung (a<0) throw a else throw 'a' }catch(int a){ cout<<'Caught an integer: ' << a<

Output:

Paliwanag:

Sa code sa itaas, gumagamit kami ng maraming pahayag ng catch. Mayroon kaming isang pagsubok sa pagpapaandar na bumubuo ng isang pagbubukod. Sa unang kaso ng pagsubok, ang halaga ay 10. Dahil ang 10 ay mas malaki kaysa sa zero, 'a' ang tauhan ay itinapon at nahuli ito ng pangalawang pagpapaandar ng catch.

Sa pangalawang kaso, ang halaga ay mas mababa sa 0 kaya ang halagang -1 ay itinapon at nahuli ito ng pagbubukod ng integer

Exception na Pangangasiwa sa base at nagmula sa klase:

Kung ang base at nagmula sa mga pagbubukod sa klase ay nahuli pagkatapos ay ang catch ng nagmula sa klase ay dapat na maisagawa bago ang batayang klase.

Narito ang ilang mga pagbubukod:

  • std :: pagbubukod

  • logic_error

  • runtime_error

  • bad_alloc

  • bad_cast

  • masamang_paniniwala

Sa pamamagitan nito nakarating kami sa dulo ng blog na ito sa 'Exception Handling In C ++'. Inaasahan kong nahanap mo ito na nagbibigay-kaalaman at kapaki-pakinabang, manatiling nakasubaybay para sa higit pang mga tutorial sa mga katulad na paksa. Maaari mo ring i-checkout ang aming programa sa pagsasanay to makakuha ng malalim na kaalaman sa jQuery kasama ang iba't ibang mga application, maaari mo para sa live na pagsasanay sa online na may suporta na 24/7 at habang-buhay na pag-access.

May tanong ba sa amin? Nabanggit ang mga ito sa seksyon ng mga komento ng blog na ito at babalikan ka namin.