C ++ unntakshåndtering

C ++ unntakshåndtering
Unntak er all unormal oppførsel eller feiltidsfeil. Unntak er offbeat -situasjon i programmet vårt der programmet vårt skal være klart til å håndtere det med passende respons.

Der unntak skjer

Hver gang vi kjører programvare, forventer vi at programvaren vår fungerer ordentlig i enhver situasjon. Men i noen tilfeller oppstår noen hendelser når den normale strømmen av utførelsen av programvaren vår blir stoppet. Så når vi sier at programvaren vår må være robust, betyr det at programvaren fungerer ordentlig i enhver situasjon.

Avvikshåndtering

C ++ unntakshåndtering brukes til å håndtere feiltilstanden i et program systematisk ved å ta den nødvendige handlingen. Ved hjelp av unntakshåndtering kan vi enkelt administrere og svare på kjøretidsfeil.

Prøv, fange, kaste

  1. Hvis det oppstår noen eksepsjonell situasjon i programmet vårt, inneholder vi det i en blokk som heter prøve blokkere.
  2. Hvis noe unntak skjer i prøveblokken, må den kastes ved hjelp av nøkkelordet kaste.
  3. Dette unntaket blir fanget av å fange blokkere. I fangstblokken tas nødvendige tiltak for å håndtere unntaket.

Syntaks

prøv

Fangst (type1 arg)

Fangst (type2 arg)

----------
Fangst (Typen Arg)

Forklaring
For det første bruker vi å skrive nøkkelordet prøve. Etter å ha avsluttet prøveblokken, må vi skrive å fange Blokk umiddelbart. Vi kan skrive flere fangstblokker i rekkefølge. Men hvor Try Block End, må alle fangstblokkene skrives umiddelbart. Hvis vi ikke skriver fangstblokk øyeblikkelig etter forsøksblokken, kan det oppstå feil. Vi bruker kaste Nøkkelord inne i prøveblokken.

Programmering Eksempel 1

# inkluderer
Ved hjelp av navneområdet STD;
int main ()

cout<< “ Exception Handling Program :” ;
prøv
Kast 30;
cout<< “ \n Try ” ;

fangst (int e)
cout<< “ \n Exception no : ” << e ;

cout<< “ \n Testing The Last Line ” ;

Produksjon

Programmeringsforklaring
I dette programmeringseksemplet prøver vi å vise hvordan unntak oppstår og hvordan du håndterer det. Inne i hovedfunksjonen etter å ha skrevet en utgangserklæring vi bruker prøve blokkere. Kaste Nøkkelord brukes inne i prøveblokken. Etter å ha kastet søkeord bruker vi et nummer 30. Det kan være en streng, eller en dobbel eller en float- hvilken som helst konstant vi kan bruke. Så skriver vi en cout -uttalelse. Men denne linjen kan ikke utføres etter utførelsen av kast. Etter å ha avsluttet prøveblokken, skriver vi fangstblokken umiddelbart. Inne i fangstblokken skriver vi linjen (int e). Ved hjelp av å kaste nøkkelord hvilken verdi vi kaster, vil den verdien komme inn i E -variabelen. Etter å ha avsluttet fangstblokken, skriver vi en utgangserklæring “\ n Testing the Last Line”. Nå er spørsmålet når denne linjen skal utføres etter outputklæringen i fangstblokken?

Regler for å prøve, fange og kaste blokk

  1. Hvis vi skriver prøveblokk, må vi skrive fangstblokk.
  2. Hvis vi skriver bare fangstblokk og ikke skriver noen prøveblokk og kast, vil feil oppstå.
  3. Hvis vi skriver kast og fange blokkering og ikke skriver noen prøveblokk, vil feil oppstå.
  4. Hvis vi bare skriver kaster og ikke skriver noe forsøk og fangstblokk, vil ingen feil oppstå. Det betyr at vi kan skrive kast uten å skrive prøveblokken.
  5. Hvis vi skriver flere fangstblokker med forskjellige typer argumenter i rekkefølge, som kaster verdi vil samsvare med typen fangstargument, vil den akseptere det. Da vil ingen andre fangstblokker bli utført. Programmeringseksemplet er gitt nedenfor.

Programmering Eksempel 2

# inkluderer
Ved hjelp av navneområdet STD;
int main ()

cout<< “ Exception Handling Program :” ;
prøv
if (i == 1)
Kast 1;
if (i == 2)
Kast 2;
if (i == 3)
Kast 3;
cout<< “ \n Try ” ;

fangst (dobbelt e)
cout<< “ \n Exception no : ” << e ;

fangst (int e)
cout<< “ \n Exception no : ” << e ;

cout<< “ \n Testing The Last Line ” ;

Produksjon

f. Vi kan skrive flere kastuttalelser i en enkelt prøveblokk.

Programmeringseksempel 3

# inkluderer
ved hjelp av navneområdet STD;
int main ()

int i = 3;
cout<< “ Exception Handling Program :” ;
prøv
if (i == 1)
Kast 1;
if (i == 2)
Kast 2;
if (i == 3)
Kast 3;
cout<< “ \n Try ” ;

fangst (int e)
cout<< “ \n Exception no : ” << e ;

cout<< “ \n Testing The Last Line ” ;

Produksjon

g. Vi kan skrive kastuttalelse i en prøveblokk uten å gi noe kastverdi.

Programmering Eksempel 4

# inkluderer
ved hjelp av navneområdet STD;
int main ()

cout<< “ Exception Handling Program :” ;
int i = 3;
prøv
if (i == 3)
kast;
cout<< “ \n Try ” ;

fangst (int)
cout<< “ \n Exception no : ” ;

cout<< “ \n Testing The Last Line ” ;

Produksjon

Forklaring

Her skriver vi kast nøkkelord uten å gi noen verdi, da blir programmet avsluttet fordi riktig unntakshåndtering ikke skjer her. Som et resultat vil ikke fangstblokk bli utført. I kompileringstid vil det ikke være noen feil. Men i kjøretid blir programmet avsluttet med en melding "avsluttet uten et aktivt unntak".

Konklusjon

Vi diskuterer i detalj om unntakshåndtering, og lærer her at hvis noen unormal situasjon oppstår i vårt program, må programmet være klare til å håndtere denne unormale situasjonen.