RicH and FamouS

       Home         Glosar IT                                                                                                                                                                                                              SUBSCRIBE NOW!
        

03.04.2009

Exceptii C++

Un lucru foarte util la programarea C++ sint exceptiile. Acestea sint erori produse la executia programului cind controlul este preluat de codul de tratarea acestor exceptii, daca exista. In acest fel se poate preveni opriri bruste ale programelor la aparitia acestor erori, putindu-se lua masuri de genul eliberat resursele afisate, atentionat utilizatorul, scris detalii despre eroare in fisiere de log, etc.

Pentru a trata erorile se folosesc blocurile try .. catch, ca in exemplul de mai jos:

Cod:
#include
using namespace std;

int main () {
try
{
throw 20;
}
catch (int e)
{
cout << "Exceptie aparuta cu nr. " <<>

Sa luam pas cu pas exemplul. Tot codul de executat in care este posibil sa apara exceptiile e inclus in try {}. In acest exemplu este generata o exceptie cu numarul 20, care va fi tratata mai jos. Dupa codul din try{} urmeaza una sau mai multe instructiuni catch() pentru diverse tipuri de erori. In acest caz este prinsa doar eroarea de tip intreg.

De exemplu puteti avea asa:

Cod:
try {
// codul e aici
}
catch (int param) { cout << "Exceptie intreaga"; } catch (char param) { cout << "Exceptie de tip caracter"; } catch (...) { cout << "Orice alte exceptii"; }

Dupa cum se vede se poate specifica prin '...' orice tip de exceptii netratata anterior.
La aparitia unei erori sint analizate toate instructiunile catch() iar daca una se potriveste tipului de erorare este executata, dupa care programul continua cu instructiilile de dupa catch().

C++ Standard include o clasa pentru exceptii care poate fi folosita sau extinsa dupa necesitati. De exemplu:

Cod:
#include
#include
using namespace std;

class myexception: public exception
{
virtual const char* what() const
{
return "A aparut exceptia";
}
} myex;

int main () {
try
{
throw myex;
}
catch (exception& e)
{
cout <<>

Folosind 'exception& e' in catch() va prinde orice exceptie derivata din clasa exception, inclusiv cea definita de noi, 'myexception'.
Librariile C++ standard definesc citeva exceptii standard toate derivate din clasa 'exception' printre care bad_alloc, bad_cast, bad_exception, bad_typeid, etc.

Exista mult alte lucruri legate de exceptii, incepind cu exceptii standard ce le puteti trata pentru diverse situatii, pina la exceptii MFC (macrourile TRY .. CATCH) si multe altele.

    Blog din Moldova    FastCounter 

 
Copyright © 2008-2010 Foster1. All rights reserved.