Sådan håndteres undtagelser nemt i C++

Sadan Handteres Undtagelser Nemt I C



Uventede hændelser, der finder sted, mens programmet kører, omtales som undtagelser eller fejl. Undtagelser opstår under kørsel og kan ikke fanges under kompilering, så de kan forårsage alvorlige problemer i programmet. At håndtere undtagelser godt i et C++-program er et primært mål for en programmør at opnå de ønskede resultater.

Sådan håndteres undtagelser nemt i C++

Undtagelseshåndtering i C++ refererer til mekanismen til at opdage runtime-fejl og håndtere dem effektivt, såsom håndtering af ugyldige input, division af et tal med nul i divisionsoperationer og mange flere.

Undtagelseshåndtering i C++ involverer tre nøgleord: prøv, kast og fang. Try-sætningen giver brugeren mulighed for at definere den kodeblok, der kan rejse en undtagelse i koden. Throw nøgleordet kaster en undtagelse, hvis det opdages efter at have kontrolleret blokken under prøve nøgleordet. Catch nøgleordet indeholder den kodeblok, der kan håndtere undtagelsen observeret i try-blokken.







Eksempel 1: Undtagelseshåndtering under division

Koden er skrevet for at kontrollere undtagelserne under division.



#include
ved brug af navneområde std ;

int vigtigste ( ) {

dobbelt tæller, nævner, division ;

cout << 'Indtast en tællerværdi: ' ;
spise >> tæller ;

cout <> nævner ;

prøve {


hvis ( nævner == 0 )
kaste 0 ;


division = tæller / nævner ;
cout << tæller << '/' << nævner << ' = ' << division << endl ;
}

fangst ( int antal_undtagelse ) {
cout << 'Fejl! Divisor kan ikke være  ' << antal_undtagelse << endl ;
}

Vend tilbage 0 ;
}

I dette program indtaster brugeren værdien af ​​tælleren og nævneren, der er erklæret i main()-sektionen. I try-blokken bruges en if-sætning til at kontrollere undtagelsen, dvs. om nævneren er nul eller ej. Da division ikke kan udføres med en nuldivisor, hvis nævneren viser sig at være 0, vil det give en undtagelse, og catch-blokken vil returnere et fejlargument, ellers udføres den simple divisionsoperation.







Brugeren indtaster en tæller 42 og et 0 i nævneren, hvilket kaster en undtagelse, så programmet returnerer fejlargumentet.



Brugeren indtaster en tæller 42 og 2 som en nævner, da der ikke er fundet nogen undtagelse, resultatet efter divisionen returnerer.

Eksempel 2 Undtagelseshåndtering for at kontrollere alderen

Dette program kontrollerer undtagelser i brugerens alder.

#include
ved brug af navneområde std ;

/*
Her vil vi kaste undtagelse (alder som undtagelse), hvis personens alder er under 18 år.
*/

int vigtigste ( )
{
// tjekker om alderen er mere end 18 i prøveblokken.
prøve
{
int alder ;
cout << 'Indtast din alder for at få adgang til: ' ;
spise >> alder ;

hvis ( alder >= 18 )
{
cout << 'Adgang givet.' ;
}
// tilpasset undtagelse bliver kastet, hvis alderen er under 18.
andet
{
kaste ( alder ) ;
}
}
// fanger den kastede undtagelse og viser det ønskede output (adgang nægtet!)
fangst ( int x )
{
cout << 'Adgang nægtet! Du er mindreårig.' << endl ;
}
Vend tilbage 0 ;
}

I dette program er en variabel med en heltalsværdi defineret. Brugeren bliver bedt om at indtaste alderen og prøve blokeringstjek, hvis brugerens alder er over eller lig med 18. Hvis det ikke er sandt, kaster den en undtagelse, og undtagelsesblokken vil returnere Adgang nægtet! Argument. Ellers vil adgangen blive givet.

Brugeren indtaster alderen til at være 12 for at kontrollere adgangsbevillingen, da denne alder er under 18 år, så argumentet Access denied returneres.

Brugeren indtaster alder 20, da dette er over 18 år, så adgangen gives til brugeren.

Bemærk : Hvis der ikke er nogen catch-blok i programmet, vil programmet opføre sig unormalt og afslutte uventet i tilfælde af undtagelser.

Konklusion

Exception Handling i C++ refererer til mekanismen til at opdage runtime fejl og håndtere dem effektivt. Det involverer tre nøgleord prøv, kast og fang. Undtagelsen kontrolleres for koden i try-blokken, throw-nøgleordet kaster undtagelsen, hvis den findes, og catch-blokken håndterer undtagelsen, der er kastet for try-blokken. Håndtering af undtagelser gør brugeroplevelsen jævn og fantastisk ved at undgå runtime-fejl.