Monday, June 23, 2025 18:56

Cuprins >> Debugging Și Manipularea Erorilor > Directivele Using

Directivele Using

.NET oferă o modalitate simplificată și mai ușoară de a lucra cu resursele care trebuie eliminate (eliberate atunci când nu mai avem nevoie de ele) prin construcția numită directivă Using. Iată un exemplu despre felul în care putem citi un fișier (la fel ca în cele două lecții anterioare) și îl eliberăm în mod automat când am terminat cu utilizarea sa, folosind acest cuvânt cheie:

using (StreamReader cititor = new StreamReader(numeFisier))
{
    // Foloseste variabila cititor aici
}

Prin includerea declarației variabilei noastre cititor în instrucțiunea using, o putem folosi la fel cum am face-o în mod normal, cu singura diferență că nu trebuie să ne facem griji cu privire la eliberarea fișierului atunci când terminămde lucrat cu el. Cu toate acestea, dacă furnizăm un fișier care nu există, tot vom primi în continuare o excepție de tip System.IO.FileNotFoundException și de aceea tot trebuie să înfășurăm directiva Using într-o construcție Try Catch:

using System;
using System.IO;

namespace BunaLume
{
    class Program
    {
        static void Main(string[] args)
        {
            string numeFisier = "FisierTextInexistent.txt";
            CitesteFisier(numeFisier);
            Console.ReadLine();
        }

        static void CitesteFisier(string numeFisier)
        {            
            // Exceptii pot fi aruncate in codul urmator
            try
            {
                // Putem declara direct variabila aici
                using (StreamReader cititor = new StreamReader(numeFisier))
                {
                    // Si o putem folosi aici, daca fisierul a fost citit
                    string linie = cititor.ReadLine();
                    Console.WriteLine(linie);
                    // Si stim ca va fi eliberat aici
                }
            }
            catch (FileNotFoundException fnfe)
            {
                // Manipulator exceptie FileNotFoundException
                // Informam utilizatorul ca fisierul nu exista
                Console.WriteLine("Fisierul '{0}' nu a fost gasit.", numeFisier);
            }
            catch (IOException ioe)
            {
                // Manipulator pentru alte tipuri de exceptii de intrare/iesire
                Console.WriteLine(ioe.StackTrace);
            }
            catch (Exception ex)
            {
                // Manipulator pentru orice alt tip de exceptie ce nu a fost manipulata specific
                // Afisam intreaga exceptie la consola
                Console.WriteLine(ex.ToString());
            }
        }
    }
}

 

Tags: , ,

Leave a Reply