Sådan implementeres undtagelseshåndtering i C ++?



Denne artikel hjælper dig med at forstå, hvad der er undtagelseshåndtering, og hvordan du implementerer undtagelseshåndtering i C ++ med praktisk demonstration.

Undtagelser er unormale forhold i løbetid eller kompileringstid. er et meget vigtigt koncept i c ++. Denne artikel introducerer dig til håndtering af undtagelser i C ++ sammen med dens forskellige typer.

Følgende punkter vil blive dækket i denne artikel,





Så lad os komme i gang dengang,

Undtagelseshåndtering i C ++

Typer af undtagelser

Der er to typer undtagelser,



Driftstid Undtagelse

Det er en undtagelse fanget i løbetid.

Kompileringstidsundtagelse



Det er en undtagelse fanget i kompileringstiden.

Fortsætter med denne undtagelseshåndteringsartikel i C ++,

Hvad er undtagelseshåndtering?

Fejl forstyrrer normal udførelse af et program. Undtagelsesbehandling er meget nødvendig, og det er processen med at håndtere fejl eller undtagelser. Det sørger for, at eksekveringen af ​​programmet ikke påvirkes af undtagelserne og håndterer dem langsomt uden at forårsage noget problem med programudførelsen.

Når du overvejer håndtering af undtagelser, er der tre vilkår forbundet med det,

Prøve

Koden inde i denne blok er som en prøvekode, som muligvis kaster en undtagelse. Denne undtagelse fanges inde i fangstblokken.

Fangst

Koden i denne blok udføres, når koden i prøveblokkene kaster en undtagelse.

Kaste

Dette nøgleord bruges til at kaste en undtagelse, når det opstår. Undtagelsen sendes til undtagelsesbehandleren.

Syntaks:

Koden inde i prøveblokken udføres. Hvis der genereres en fejl, kaster nøgleordet kast undtagelsen til undtagelsesbehandleren, det vil sige fangstblokken. Fangstblokken udførte derefter koden, som er inde i dens blok, og håndterede dermed undtagelsen.

Lad os se på prøvekode til undtagelseshåndtering i c ++

Prøvekode

#include ved hjælp af namespace std prøv {// kode for prøv kast & ldquoexception & rdquo} fangst (undtagelse) {// kode for fangst} int main () {int x = 1 prøv {cout<< 'Try Block: '<

Produktion:

Output - Undtagelseshåndtering i C ++ - Edureka

Forklaring

Dette program demonstrerer undtagelseshåndtering. Vi har en variabel x, som er tildelt en værdi på 1. Så har vi starten på prøveblokken. I denne blok har vi en if-sætning med betingelsen x<10.

I vores tilfælde er betingelsen sand, da x er en. Programmet kaster derefter en undtagelse, og kontrollen skifter til fangstblok. Vi udfører tilstanden i fangstdelen og forlader blokken.

fangst (...) {omkostning<< 'Default Exceptionn'<

Til sidst udfører vi de resterende udsagn efter fangstblok- og exitprogrammet.

Der kan være flere fangstopgørelser, afhængigt af antallet af mulige undtagelser.

Fortsætter med denne undtagelseshåndteringsartikel i C ++,

Fejl i fangstblok

Overvej det foregående program, hvis i stedet for x kaster nøgleordet 'ABC', så er fangstfunktionen ikke i stand til at håndtere det. Det viser en fejl,

sorteringsfunktion c ++

Vi kan få vores vundet fejlmeddelelse vist i et sådant tilfælde.

For at løse dette skal vi tilføje en standardfangstfunktion til koden for at håndtere sådanne problemer.

#include ved hjælp af namespace std int main () {int x = 1 prøv {cout<< 'Try Block: '<

Udgang:

Forklaring:

Denne kode svarer til den forrige. Den eneste ændring er, at den undtagelse, der kastes, er af typen char. Dette resulterer i, at vores fangstfunktion er ubrugelig. Så vi har inkluderet en standardfangstfunktion.

Hvis ingen af ​​fangstopgørelserne stemmer overens, udføres standardfangsten.

Flere fangstblokke

Der kan være flere fangstblokke af en enkelt forsøgsblok.

Her er et eksempel,

#include ved hjælp af namespace std int test (int a) {prøv {if (a<0) throw a else throw 'a' }catch(int a){ cout<<'Caught an integer: ' << a<

Produktion:

Forklaring:

I ovenstående kode bruger vi flere fangstopgørelser. Vi har en funktionstest, der genererer en undtagelse. I det første testtilfælde er værdien 10. Da 10 er større end nul, kastes 'a' tegnet, og det fanges af den anden fangstfunktion.

I det andet tilfælde er værdien mindre end 0, så værdien -1 kastes, og den fanges af heltalsundtagelse

Undtagelseshåndtering i basis- og afledt klasse:

Hvis basen og afledte klasseundtagelser fanges, skal fangsten af ​​den afledte klasse udføres før basisklassen.

Her er nogle undtagelser:

  • std :: undtagelse

  • logik_fejl

  • runtime_error

  • dårlig_alloc

  • dårlig_cast

  • dårlig undtagelse

Med dette kommer vi til slutningen af ​​denne blog om 'Exception Handling In C ++'. Jeg håber, du fandt dette informativt og hjælpsomt, hold øje med flere tutorials om lignende emner. Du kan også tjekke vores træningsprogram to få dybdegående viden om jQuery sammen med dens forskellige applikationer, det kan du til live online træning med support døgnet rundt og levetid adgang.

Har du et spørgsmål til os? Nævn dem i kommentarfeltet på denne blog, så vender vi tilbage til dig.