Hur man enkelt hanterar undantag i C++

Hur Man Enkelt Hanterar Undantag I C



Oväntade händelser som inträffar medan programmet körs kallas undantag eller fel. Undantag uppstår under körning och kan inte fångas upp under kompilering, så de kan orsaka allvarliga problem i programmet. Att hantera undantag väl i ett C++-program är ett främsta mål för en programmerare att få önskat resultat.

Hur man enkelt hanterar undantag i C++

Undantagshantering i C++ hänvisar till mekanismen för att upptäcka körtidsfel och hantera dem effektivt, såsom hantering av ogiltiga indata, division av ett tal med noll i divisionsoperationer och många fler.

Undantagshantering i C++ involverar tre nyckelord: prova, kasta och fånga. Try-satsen låter användaren definiera kodblocket som kan skapa ett undantag i koden. Nyckelordet throw ger ett undantag om det upptäcks efter att ha kontrollerat blocket under nyckelordet try. Nyckelordet catch innehåller kodblocket som kan hantera undantaget som observeras i försöksblocket.







Exempel 1: Undantagshantering under division

Koden är skriven för att kontrollera undantagen vid division.



#include
använder sig av namnutrymme std ;

int huvud ( ) {

dubbel täljare, nämnare, division ;

cout << 'Ange ett täljarvärde: ' ;
äter >> täljare ;

cout <> nämnare ;

Prova {


om ( nämnare == 0 )
kasta 0 ;


division = täljare / nämnare ;
cout << täljare << '/' << nämnare << ' = ' << division << endl ;
}

fånga ( int num_exception ) {
cout << 'Fel! Divisor kan inte vara  ' << num_exception << endl ;
}

lämna tillbaka 0 ;
}

I det här programmet matar användaren in värdet på täljaren och nämnaren som deklareras i main()-sektionen. I try-blocket används en if-sats för att kontrollera undantaget som är om nämnaren är noll eller inte. Eftersom division inte kan utföras med en nolldelare om nämnaren visar sig vara 0, kommer det att skapa ett undantag och fångstblocket kommer att returnera ett felargument annars utförs den enkla divisionsoperationen.







Användaren matar in en täljare 42 och en 0 i nämnaren, vilket ger ett undantag, så programmet returnerar felargumentet.



Användaren matar in en täljare 42 och 2 som en nämnare, eftersom det inte finns något undantag, kommer resultatet efter divisionen tillbaka.

Exempel 2 Undantagshantering för att kontrollera åldern

Detta program kontrollerar undantag i användarens ålder.

#include
använder sig av namnutrymme std ;

/*
Här vill vi kasta undantag (ålder som undantag) om personens ålder är mindre än 18 år.
*/

int huvud ( )
{
// kontrollerar om åldern är mer än 18 i försöksblocket.
Prova
{
int ålder ;
cout << 'Ange din ålder för att komma åt:' ;
äter >> ålder ;

om ( ålder >= 18 )
{
cout << 'Tillgång beviljad.' ;
}
// anpassat undantag görs om åldern är under 18 år.
annan
{
kasta ( ålder ) ;
}
}
// fångar det kastade undantaget och visar önskad utdata (åtkomst nekad!)
fånga ( int x )
{
cout << 'Åtkomst nekad! Du är minderårig.' << endl ;
}
lämna tillbaka 0 ;
}

I det här programmet definieras en variabel med ett heltalsvärde. Användaren uppmanas att mata in åldern och prova blockkontroller om användarens ålder är över eller lika med 18. Om det inte är sant ger den ett undantag, och undantagsblocket kommer att returnera Access nekad! Argument. Annars kommer åtkomsten att beviljas.

Användaren anger åldern för att vara 12 för att kontrollera åtkomstbeviljande, eftersom denna ålder är under 18 år, så argumentet Access nekad returneras.

Användaren anger ålder 20, eftersom detta är över 18, så åtkomst ges till användaren.

Notera : Om det inte finns något fångstblock i programmet kommer programmet att bete sig onormalt och avslutas oväntat vid undantag.

Slutsats

Exception Handling i C++ hänvisar till mekanismen för att upptäcka körtidsfel och hantera dem effektivt. Det involverar tre nyckelord prova, kasta och fånga. Undantaget kontrolleras för koden i try-blocket, nyckelordet throw kastar undantaget om det hittas, och catch-blocket hanterar undantaget som kastas för try-blocket. Att hantera undantag gör användarupplevelsen smidig och bra genom att undvika körtidsfel.