Sunteți pe pagina 1din 2

Lucrarea 8: Fișiere.

Tratarea excepțiilor

Ce ne propunem astăzi
Azi vom învăța cum să folosim bibliotecile dedicate lucrului cu fișiere și
tratarea excepțiilor în limbajul C++. Pentru ca informațiile introduse în
program să fie accesate ulterior este important ca acestea să fie salvate în
fișiere. De asemenea, este important ca programatorul să trateze excepțiile
care pot să apară în diferite situații, deoarece utilizatorul și dezvoltatorul
programului va primi mesaje concrete legate de erorile ce pot să apară pe
parcurs.

Pentru lucrul cu fișiere este nevoie de folosirea bibliotecii <fstream> care conține câteva clase care pot
fi folosite pentru diferite operații asupra fișierelor, acestea sunt: ifstream, ofstream și fstream și care sunt
derivate din clasele istream, ostream, respectiv iostream. Mai multe detalii se pot găsi în referința [1] la
pagina 185.
În limbajul C++ se folosesc fluxuri de informație denumite stream-uri. Acestea sunt entități logice care
produc sau primesc informație. În rândurile de mai jos se pot vedea mai multe stream-uri care se folosesc
pentru intrare, ieșire sau intrare/ieșire:
ifstream intrare; //stream de intrare
ofstream iesire; //stream de iesire
fstream io; //stream de intrare/iesire

După ce ați creat stream-ul, acesta se poate deschide folosind funcția open().
void ifstream::open(const char *numefisier, ios::openmode mode = ios::in);
void ofstream::open(const char *numefisier, ios::openmode mode = ios::out | ios::trunc);
void fstream::open(const char *numefisier, ios::openmode mode = ios::in | ios::out);

Mai multe tipuri de deschidere a fișierelor pot fi găsite în referința [1] la pagina 200.
Un alt aspect important în limbajul C++ îl constituie tratarea excepțiilor. Acestea sunt erori care pot să
apară în timpul execuției programului și acestea pot fi preluate de codul de tratare care se ocupă cu
excepțiile, dacă sunt definite în program.
Avantajele folosirii acestora sunt:
 pot preveni opririle bruște ale programelor;
 atenționează utilizatorul asupra erorii apărute;
 se pot salva detalii despre erori în fișiere de tip log.
O excepție este definită ca fiind un obiect a cărui adresă este trimisă dinspre zona de cod unde a apărut
problema către o zonă de cod care trebuie să o rezolve.
Etapele care trebuie urmărite pentru tratarea excepțiilor sunt:
 se identifică părți din program care pot să genereze erori și se pun în interiorul unui bloc de tip
try. În cadrul acestui bloc, se va pune o condiție care în caz pozitiv va semnala apariția excepției
cu ajutorul cuvântului throw;
 se realizează blocuri de tip catch, care au rolul de a capta excepțiile atunci când ele apar, fiind
tratate conform opţiunilor proiectantului, evitând astfel eventual oprirea aplicaţiei sau
funcţionarea sa nedorită.
Mai multe se pot afla din cursul şi exemplele prezentate la cursul despre tratarea excepţiilor.
Partea practică. Mod de lucru
Iată pașii care trebuie urmați pentru însuşirea conceptelor tratate în cadrul acestui laborator:
1. În Anexa 8 exemplul 1 este prezentată o problemă care poate afișa un text într-un fișier. Se va
studia acest program, în special aspectele specifice lucrului cu fişiere text.
2. În Anexa 8 exemplu 2 este prezentată o problemă care permite citirea informațiilor dintr-un fişier
a informaţiilor salvate în acesta. Vor fi însuşite posibilităţile de citire din fişier.
3. În Anexa 8 exemplu 3 este prezentată o problemă care folosește liste eterogene și care tratează o
excepție care poate apărea în timpul rulării programului. Se vor studia în special aspectele specifice
tratării excepţiei.
4. Pe baza Anexei 8 exemplul 3, prezentat anterior, se cere adăugarea a două opțiuni care vor
permite citirea și afișarea într-un fișier precizat de utilizaror.
5. Folosind cunoștințele acumulate până acum să se rezolve următoarea problemă:
Realizaţi un program care să gestioneze următoarele informaţii despre electrocasnicele dintr-
un magazin:
 Maşină de spălat cu următoarele variabile: Producător, Preţ, Nr_programe;
 Aragaz cu următoarele variabile: Producător, Preţ, Tip arzătoare.
Creaţi pe baza informaţiilor furnizate o clasă de bază şi două clase derivate şi implementaţi
următoarele funcţii prin intermediul unui meniu interactiv:
1. Citirea informațiilor existente în fișier
2. Adăugare maşină spălat sau aragaz
3. Afişare electrocasnice.
4. Căutare aragaz după “tip arzătoare”.
5. Salvare carte de telefoane în fişier
6. Ieşire
Problema se va rezolva folosind liste eterogene și se vor prevedea cel puțin două situații de
tratare a excepțiilor.

Cu ce ne-am ales?
Prin programele prezentate ca exemple și problemele propuse de la partea practică
a laboratorului ne-am familiarizat cu lucrul cu fișiere și cu tratarea excepțiilor în
limbajul C++. Lucrul cu fișiere va ajuta utilizatorul să stocheze informațiile și să
le acceseze ulterior. Programele care prevăd tratarea excepțiilor le permit să
funcţioneze corect mai departe, prin prevederea unor alternative. Astfel, am învăţat
să realizăm aplicaţii care să asigure persistenţa informaţiilor pe de o parte,
respectiv rularea mai departe a aplicaţiilor chiar şi în situaţiile anormale de
funcţionare. Programele astfel obţinute sunt mai robuste, mai sigure în funcţionare,
corespunzând astfel unor cerinţe de toleranţă la defectare. Un nou pas spre
profesionalism !

S-ar putea să vă placă și