Sobes.tech
Intern

Τι είναι οι εξαιρέσεις στη γλώσσα προγραμματισμού C#;

sobes.tech AI

Απάντηση από AI

Οι εξαιρέσεις στη C# είναι ανωμαλίες ή σφάλματα που συμβαίνουν κατά την εκτέλεση του προγράμματος και διακόπτουν τη φυσιολογική ροή του.

Επιτρέπουν τον διαχωρισμό του κώδικα διαχείρισης σφαλμάτων από τον κύριο κώδικα της λογικής της εφαρμογής και παρέχουν μια πιο δομημένη προσέγγιση στη διαχείριση σφαλμάτων.

Βασικά στοιχεία των εξαιρέσεων στη C#:

  1. Τύποι εξαιρέσεων: Η C# διαθέτει μια ιεραρχία τυπικών κλάσεων εξαιρέσεων που κληρονομούν από τη βασική κλάση System.Exception. Για παράδειγμα, System.NullReferenceException, System.DivideByZeroException, System.IO.FileNotFoundException. Μπορείτε επίσης να δημιουργήσετε τις δικές σας κλάσεις εξαιρέσεων.
  2. Γενεά εξαιρέσεων (throw): Η εξαίρεση δημιουργείται με τη λέξη-κλειδί throw.
  3. Ανίχνευση εξαιρέσεων (try-catch): Το μπλοκ try περιέχει κώδικα που μπορεί να δημιουργήσει εξαίρεση. Το μπλοκ catch πιάνει έναν συγκεκριμένο τύπο εξαίρεσης και εκτελεί τον κώδικα για την αντιμετώπισή της.
  4. Τελευταίο μπλοκ (finally): Το μπλοκ finally εκτελείται πάντα, ανεξάρτητα αν δημιουργήθηκε εξαίρεση ή όχι. Συχνά χρησιμοποιείται για απελευθέρωση πόρων.
  5. Χειριστής using: Ένας πιο βολικός τρόπος διαχείρισης πόρων, που εγγυάται την κλήση της μεθόδου Dispose. Είναι παρόμοιο με τη δομή try-finally για αντικείμενα που υλοποιούν το IDisposable.
  6. Φίλτρα εξαιρέσεων: Επιτρέπουν την προσθήκη συνθήκης στο μπλοκ catch για πιο συγκεκριμένη διαχείριση εξαιρέσεων.

Παράδειγμα χρήσης:

public class Example
{
    public void ProcessData(int denominator)
    {
        try
        {
            int result = 10 / denominator; // Μπορεί να δημιουργήσει DivideByZeroException
            Console.WriteLine($"Αποτέλεσμα: {result}");
        }
        catch (DivideByZeroException ex) // Ανιχνεύουμε μια συγκεκριμένη εξαίρεση
        {
            Console.WriteLine("Σφάλμα: Δεν μπορεί να διαιρεθεί με το μηδέν.");
            // Καταγραφή της εξαίρεσης, αν χρειάζεται
            // Console.WriteLine($"Λεπτομέρειες εξαίρεσης: {ex.Message}");
        }
        catch (Exception ex) // Ανιχνεύουμε οποιαδήποτε άλλη εξαίρεση
        {
            Console.WriteLine($"Έγινε απροσδόκητο σφάλμα: {ex.Message}");
        }
        finally // Αυτό το μπλοκ θα εκτελεστεί πάντα
        {
            Console.WriteLine("Η επεξεργασία ολοκληρώθηκε.");
        }
    }

    public void UsingExample()
    {
        // Παράδειγμα χρήσης του using για αυτόματη κλήση της Dispose
        using (StreamReader reader = new StreamReader("file.txt"))
        {
            string line = reader.ReadLine();
            Console.WriteLine(line);
        } // Εδώ, το reader.Dispose() καλείται αυτόματα, ακόμη και αν προκύψει εξαίρεση
    }

    public void ThrowExample(int value)
    {
        if (value < 0)
        {
            throw new ArgumentOutOfRangeException(nameof(value), "Η τιμή πρέπει να είναι μη αρνητική."); // Δημιουργία δικής μας εξαίρεσης
        }
        // ... περαιτέρω λογική
    }
}

Η χρήση εξαιρέσεων βοηθά στη δημιουργία πιο αξιόπιστων, ευανάγνωστων και εύκολων στη συντήρηση εφαρμογών, διαχωρίζοντας τη διαχείριση σφαλμάτων από τη βασική λογική.