Kuidas C++-s erandeid hõlpsalt käsitleda

Kuidas C S Erandeid Holpsalt Kasitleda



Programmi töötamise ajal toimuvaid ootamatuid sündmusi nimetatakse eranditeks või vigadeks. Erandid esinevad käitusajal ja neid ei saa kompileerimise ajal tabada, mistõttu võivad need programmis põhjustada tõsiseid probleeme. C++ programmis erandite hea käsitlemine on programmeerija peamine eesmärk soovitud tulemuste saavutamiseks.

Kuidas C++-s eranditega hõlpsalt toime tulla

Erandi käsitlemine C++ keeles viitab käitusaja vigade tuvastamise ja nende tõhusa käsitlemise mehhanismile, nagu kehtetute sisendite käsitlemine, arvu jagamine nulliga jagamistoimingutes ja palju muud.

Erandi käsitlemine C++ keeles hõlmab kolme märksõna: proovi, viska ja püüd. Try-lause võimaldab kasutajal määratleda koodiploki, mis võib koodis erandi esile kutsuda. Viska märksõna loob erandi, kui see tuvastatakse pärast proovi märksõna all oleva ploki kontrollimist. Püügimärksõna sisaldab koodiplokki, mis saab hakkama prooviplokis täheldatud erandiga.







Näide 1: erandite käsitlemine jagunemise ajal

Kood on kirjutatud erandite kontrollimiseks jagamisel.



#include
kasutades nimeruum std ;

int peamine ( ) {

kahekordne lugeja, nimetaja, jagamine ;

cout << 'Sisestage lugeja väärtus:' ;
söömine >> lugeja ;

cout <> nimetaja ;

proovige {


kui ( nimetaja == 0 )
viskama 0 ;


jaotus = lugeja / nimetaja ;
cout << lugeja << '/' << nimetaja << '=' << jaotus << endl ;
}

püüda ( int erandi_arv ) {
cout << 'Viga! Jagajat ei saa  ' << erandi_arv << endl ;
}

tagasi 0 ;
}

Selles programmis sisestab kasutaja jaotises main() deklareeritud lugeja ja nimetaja väärtuse. Prooviplokis kasutatakse if-lauset erandi kontrollimiseks, st kas nimetaja on null või mitte. Kuna jagamist ei saa nulljagajaga teostada, kui nimetaja on 0, loob see erandi ja püüdmisplokk tagastab veaargumendi, muidu tehakse lihtne jagamisoperatsioon.







Kasutaja sisestab nimetajasse lugeja 42 ja 0, mis loob erandi, nii et programm tagastab veaargumendi.



Kasutaja sisestab nimetajaks lugeja 42 ja 2, kuna erandit ei leitud, tagastatakse tulemus pärast jagamist.

Näide 2 Erandi käsitlemine vanuse kontrollimiseks

See programm kontrollib erandeid kasutaja vanusest.

#include
kasutades nimeruum std ;

/*
Siin tahame teha erandi (erandina vanus), kui isiku vanus on alla 18.
*/

int peamine ( )
{
// kontrollimine, kas prooviblokis on vanus üle 18.
proovige
{
int vanus ;
cout << 'Sisestage oma vanus, et pääseda juurde:' ;
söömine >> vanus ;

kui ( vanus >= 18 )
{
cout << 'Juurdepääs antud.' ;
}
// kohandatud erand visatakse, kui vanus on alla 18 aasta.
muidu
{
viskama ( vanus ) ;
}
}
// visatud erandi püüdmine ja soovitud väljundi kuvamine (juurdepääs keelatud!)
püüda ( int x )
{
cout << 'Juurdepääs keelatud! Olete alaealine.' << endl ;
}
tagasi 0 ;
}

Selles programmis on defineeritud täisarvulise väärtusega muutuja. Kasutajal palutakse sisestada vanus ja proovida plokkide kontrollimist, kas kasutaja vanus on üle 18 või sellega võrdne. Kui see ei vasta tõele, teeb see erandi ja erandiplokk tagastab teate Juurdepääs keelatud! Argument. Vastasel juhul antakse juurdepääs.

Kasutaja sisestab juurdepääsu lubamise kontrollimiseks vanuseks 12, kuna see vanus on alla 18 aasta, seega tagastatakse argument Juurdepääs keelatud.

Kasutaja sisestab vanuse 20, kuna see on üle 18, seega antakse juurdepääs kasutajale.

Märge : Kui programmis pole püüdmisplokki, siis programm käitub ebanormaalselt ja lõpetab erandite korral ootamatult.

Järeldus

C++ erandite käsitlemine viitab käitusaja vigade tuvastamise ja nende tõhusa käsitlemise mehhanismile. See hõlmab kolme märksõna proovi, viska ja püüa. Erandit kontrollitakse prooviblokis oleva koodi suhtes, viskamise märksõna viskab leidmise korral erandi ja püüdmisplokk käsitleb try-ploki jaoks visatud erandit. Erandite käsitlemine muudab kasutajakogemuse sujuvaks ja suurepäraseks, vältides käitusaegseid vigu.