Cum să gestionați cu ușurință excepțiile în C++

Cum Sa Gestionati Cu Usurinta Exceptiile In C



Evenimentele neașteptate care au loc în timpul rulării programului sunt denumite excepții sau erori. Excepțiile apar în timpul rulării și nu pot fi depistate în timpul compilării, deci pot cauza probleme serioase în program. Gestionarea bine a excepțiilor într-un program C++ este un obiectiv primordial pentru un programator pentru a obține rezultatele dorite.

Cum să gestionați cu ușurință excepțiile în C++

Gestionarea excepțiilor în C++ se referă la mecanismul de detectare a erorilor de rulare și de a le gestiona eficient, cum ar fi gestionarea intrărilor nevalide, împărțirea unui număr la zero în operațiunile de împărțire și multe altele.

Gestionarea excepțiilor în C++ implică trei cuvinte cheie: încercați, aruncați și prindeți. Instrucțiunea try permite utilizatorului să definească blocul de cod care poate ridica o excepție în cod. Cuvântul cheie throw aruncă o excepție dacă este detectat după verificarea blocului sub cuvântul cheie try. Cuvântul cheie catch conține blocul de cod care poate gestiona excepția observată în blocul try.







Exemplul 1: Gestionarea excepțiilor în timpul împărțirii

Codul este scris pentru a verifica excepțiile în timpul împărțirii.



#include
folosind spatiu de nume std ;

int principal ( ) {

dubla numărător, numitor, împărțire ;

cout << 'Introduceți o valoare a numărătorului: ' ;
mâncând >> numărător ;

cout <> numitor ;

încerca {


dacă ( numitor == 0 )
arunca 0 ;


Divizia = numărător / numitor ;
cout << numărător << '/' << numitor << ' = ' << Divizia << endl ;
}

captură ( int num_exception ) {
cout << „Eroare! Divizorul nu poate fi  ” << num_exception << endl ;
}

întoarcere 0 ;
}

În acest program, utilizatorul introduce valoarea numărătorului și numitorului declarate în secțiunea main(). În blocul try, o instrucțiune if este folosită pentru a verifica excepția dacă numitorul este zero sau nu. Deoarece împărțirea nu poate fi efectuată cu un divizor zero dacă numitorul este găsit a fi 0, se va arunca o excepție și blocul catch va returna un argument de eroare, altfel operația simplă de împărțire este efectuată.







Utilizatorul introduce un numărător 42 și un 0 în numitor, care aruncă o excepție, astfel încât programul returnează argumentul de eroare.



Utilizatorul introduce un numărător 42 și 2 ca numitor, deoarece nu a fost găsită nicio excepție, rezultatul după împărțire revine.

Exemplul 2 Gestionarea excepțiilor pentru a verifica vârsta

Acest program verifică excepțiile la vârsta utilizatorului.

#include
folosind spatiu de nume std ;

/*
Aici, dorim să aruncăm o excepție (vârsta ca excepție) dacă vârsta persoanei este mai mică de 18 ani.
*/

int principal ( )
{
// verifică dacă vârsta este mai mare de 18 ani în blocul try.
încerca
{
int vârstă ;
cout << 'Introduceți vârsta pentru a accesa: ' ;
mâncând >> vârstă ;

dacă ( vârstă >= 18 )
{
cout << 'Acces permis.' ;
}
// excepția personalizată este aruncată dacă vârsta este sub 18 ani.
altfel
{
arunca ( vârstă ) ;
}
}
// prind excepția aruncată și afișează rezultatul dorit (acces refuzat!)
captură ( int X )
{
cout << „Acces refuzat! Sunteți minor.” << endl ;
}
întoarcere 0 ;
}

În acest program, este definită o variabilă cu o valoare întreagă. Utilizatorului i se cere să introducă vârsta și să încerce verificări de blocare dacă vârsta utilizatorului este mai mare sau egală cu 18 ani. Dacă nu este adevărată, atunci va arunca o excepție, iar blocul de excepție va returna Acces refuzat! Argument. În caz contrar, accesul va fi acordat.

Utilizatorul introduce vârsta de 12 ani pentru a verifica acordarea de acces, deoarece această vârstă este sub 18 ani, astfel încât argumentul Acces refuzat este returnat.

Utilizatorul introduce vârsta de 20 de ani, deoarece aceasta este peste 18 ani, astfel încât accesul este acordat utilizatorului.

Notă : Dacă nu există un bloc catch în program, atunci programul se va comporta anormal și se va termina în mod neașteptat în cazul unor excepții.

Concluzie

Gestionarea excepțiilor în C++ se referă la mecanismul de detectare a erorilor de rulare și de a le gestiona eficient. Acesta implică trei cuvinte cheie încercați, aruncați și prindeți. Excepția este verificată pentru codul din blocul try, cuvântul cheie throw aruncă excepția dacă este găsită, iar blocul catch gestionează excepția aruncată pentru blocul try. Gestionarea excepțiilor face ca experiența utilizatorului să fie fluidă și excelentă, evitând erorile de rulare.