Kuinka käsitellä poikkeuksia helposti C++:ssa

Kuinka Kasitella Poikkeuksia Helposti C Ssa



Odottamattomia tapahtumia, jotka tapahtuvat ohjelman ollessa käynnissä, kutsutaan poikkeuksiksi tai virheiksi. Poikkeuksia esiintyy ajon aikana, eikä niitä voida havaita kääntämisen aikana, joten ne voivat aiheuttaa vakavia ongelmia ohjelmassa. Poikkeusten käsittely C++-ohjelmassa on ohjelmoijan ensisijainen tavoite haluttujen tulosten saavuttamiseksi.

Kuinka käsitellä poikkeuksia helposti C++:ssa

Poikkeuskäsittelyllä C++:ssa tarkoitetaan mekanismia, jolla havaitaan ajonaikaiset virheet ja käsitellään niitä tehokkaasti, kuten virheellisten syötteiden käsittely, luvun jakaminen nollalla jakooperaatioissa ja paljon muuta.

Poikkeuskäsittelyyn C++:ssa liittyy kolme avainsanaa: yritä, heittää ja kiinni. Try-lause antaa käyttäjälle mahdollisuuden määrittää koodilohkon, joka voi aiheuttaa poikkeuksen koodissa. Heitto-avainsana heittää poikkeuksen, jos se havaitaan try-avainsanan alla olevan eston tarkistamisen jälkeen. Catch-avainsana sisältää koodilohkon, joka pystyy käsittelemään try-lohkossa havaitun poikkeuksen.







Esimerkki 1: Poikkeuskäsittely jaon aikana

Koodi on kirjoitettu tarkistamaan poikkeukset jaon aikana.



#include
käyttämällä nimiavaruus std ;

int pää ( ) {

kaksinkertainen osoittaja, nimittäjä, jako ;

cout << 'Anna osoittajan arvo:' ;
syöminen >> osoittaja ;

cout <> nimittäjä ;

yrittää {


jos ( nimittäjä == 0 )
heittää 0 ;


jako = osoittaja / nimittäjä ;
cout << osoittaja << '/' << nimittäjä << '=' << jako << endl ;
}

ottaa kiinni ( int lukumäärä_poikkeus ) {
cout << 'Virhe! Jakaja ei voi olla  ' << lukumäärä_poikkeus << endl ;
}

palata 0 ;
}

Tässä ohjelmassa käyttäjä syöttää main()-osiossa ilmoitetun osoittajan ja nimittäjän arvon. Try-lohkossa if-lausetta käytetään poikkeuksen tarkistamiseen, eli onko nimittäjä nolla vai ei. Koska jakamista ei voida suorittaa nollajakajalla, jos nimittäjä on 0, se heittää poikkeuksen ja catch-lohko palauttaa virheargumentin, muuten yksinkertainen jakotoiminto suoritetaan.







Käyttäjä syöttää nimittäjään osoittajan 42 ja 0:n, mikä heittää poikkeuksen, joten ohjelma palauttaa virheargumentin.



Käyttäjä syöttää osoittajan 42 ja 2 nimittäjäksi, koska poikkeusta ei löydy, tulos jaon jälkeen palautuu.

Esimerkki 2 Poikkeuskäsittely iän tarkistamiseksi

Tämä ohjelma tarkistaa poikkeukset käyttäjän iässä.

#include
käyttämällä nimiavaruus std ;

/*
Tässä halutaan heittää poikkeus (poikkeuksena ikä), jos henkilön ikä on alle 18.
*/

int pää ( )
{
// tarkista, onko ikä yli 18 try-lohkossa.
yrittää
{
int ikä ;
cout << 'Anna ikäsi päästäksesi käsiksi:' ;
syöminen >> ikä ;

jos ( ikä >= 18 )
{
cout << 'Pääsy myönnetty.' ;
}
// mukautettu poikkeus heitetään, jos ikä on alle 18.
muu
{
heittää ( ikä ) ;
}
}
// heitetyn poikkeuksen saaminen kiinni ja halutun lähdön näyttäminen (pääsy kielletty!)
ottaa kiinni ( int x )
{
cout << 'Pääsy kielletty! Olet alaikäinen.' << endl ;
}
palata 0 ;
}

Tässä ohjelmassa määritetään muuttuja, jolla on kokonaislukuarvo. Käyttäjää pyydetään syöttämään ikä ja kokeilemaan estotarkistusta, onko käyttäjän ikä suurempi tai yhtä suuri kuin 18. Jos se ei ole totta, se heittää poikkeuksen ja poikkeuslohko palauttaa Pääsy estetty! Perustelu. Muussa tapauksessa käyttöoikeus myönnetään.

Käyttäjä syöttää iän 12-vuotiaaksi tarkistaakseen käyttöoikeuden myöntämisen, koska tämä ikä on alle 18-vuotias, joten Pääsy kielletty -argumentti palautetaan.

Käyttäjä syöttää iän 20, koska tämä on yli 18, joten käyttöoikeus myönnetään käyttäjälle.

Huomautus : Jos ohjelmassa ei ole catch-lohkoa, ohjelma käyttäytyy epänormaalisti ja päättyy odottamatta poikkeustapauksissa.

Johtopäätös

Poikkeuskäsittelyllä C++:ssa tarkoitetaan mekanismia, jolla havaitaan ajonaikaiset virheet ja käsitellään niitä tehokkaasti. Se sisältää kolme avainsanaa yrittää, heittää ja kiinni. Poikkeus tarkistetaan try-lohkon koodin suhteen, throw-avainsana heittää poikkeuksen, jos se löytyy, ja catch-lohko käsittelee try-lohkolle heitetyn poikkeuksen. Poikkeusten käsittely tekee käyttökokemuksesta sujuvan ja erinomaisen välttämällä ajonaikaiset virheet.