Intern
Τι είναι οι εξαιρέσεις στη γλώσσα προγραμματισμού C#;
sobes.tech AI
Απάντηση από AI
Οι εξαιρέσεις στη C# είναι ανωμαλίες ή σφάλματα που συμβαίνουν κατά την εκτέλεση του προγράμματος και διακόπτουν τη φυσιολογική ροή του.
Επιτρέπουν τον διαχωρισμό του κώδικα διαχείρισης σφαλμάτων από τον κύριο κώδικα της λογικής της εφαρμογής και παρέχουν μια πιο δομημένη προσέγγιση στη διαχείριση σφαλμάτων.
Βασικά στοιχεία των εξαιρέσεων στη C#:
- Τύποι εξαιρέσεων: Η C# διαθέτει μια ιεραρχία τυπικών κλάσεων εξαιρέσεων που κληρονομούν από τη βασική κλάση
System.Exception. Για παράδειγμα,System.NullReferenceException,System.DivideByZeroException,System.IO.FileNotFoundException. Μπορείτε επίσης να δημιουργήσετε τις δικές σας κλάσεις εξαιρέσεων. - Γενεά εξαιρέσεων (throw): Η εξαίρεση δημιουργείται με τη λέξη-κλειδί
throw. - Ανίχνευση εξαιρέσεων (try-catch): Το μπλοκ
tryπεριέχει κώδικα που μπορεί να δημιουργήσει εξαίρεση. Το μπλοκcatchπιάνει έναν συγκεκριμένο τύπο εξαίρεσης και εκτελεί τον κώδικα για την αντιμετώπισή της. - Τελευταίο μπλοκ (finally): Το μπλοκ
finallyεκτελείται πάντα, ανεξάρτητα αν δημιουργήθηκε εξαίρεση ή όχι. Συχνά χρησιμοποιείται για απελευθέρωση πόρων. - Χειριστής using: Ένας πιο βολικός τρόπος διαχείρισης πόρων, που εγγυάται την κλήση της μεθόδου
Dispose. Είναι παρόμοιο με τη δομήtry-finallyγια αντικείμενα που υλοποιούν τοIDisposable. - Φίλτρα εξαιρέσεων: Επιτρέπουν την προσθήκη συνθήκης στο μπλοκ
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), "Η τιμή πρέπει να είναι μη αρνητική."); // Δημιουργία δικής μας εξαίρεσης
}
// ... περαιτέρω λογική
}
}
Η χρήση εξαιρέσεων βοηθά στη δημιουργία πιο αξιόπιστων, ευανάγνωστων και εύκολων στη συντήρηση εφαρμογών, διαχωρίζοντας τη διαχείριση σφαλμάτων από τη βασική λογική.