Junior
Μπορεί να υπάρχουν πολλά μπλοκ catch σε C# για την επεξεργασία εξαιρέσεων;
sobes.tech AI
Απάντηση από AI
Ναι, μπορεί να υπάρχουν πολλά μπλοκ catch. Αυτό επιτρέπει την αντιμετώπιση διαφορετικών τύπων εξαιρέσεων με διαφορετικό τρόπο.
Όταν προκύψει μια εξαίρεση, το CLR ελέγχει διαδοχικά τα μπλοκ catch από πάνω προς τα κάτω, ξεκινώντας από το πρώτο. Εκτελείται το πρώτο μπλοκ catch του οποίου ο τύπος εξαίρεσης ταιριάζει με τον τύπο της εξαίρεσης που εκτοξεύτηκε ή είναι η βασική του κλάση.
try
{
// Κώδικας που μπορεί να προκαλέσει εξαίρεση
}
catch (ArgumentNullException ex)
{
// Διαχείριση της εξαίρεσης ArgumentNullException
}
catch (IndexOutOfRangeException ex)
{
// Διαχείριση της εξαίρεσης IndexOutOfRangeException
}
catch (Exception ex)
{
// Διαχείριση όλων των άλλων εξαιρέσεων (βασική κλάση Exception)
// Αυτό το μπλοκ τοποθετείται συνήθως στο τέλος
}
finally
{
// Κώδικας που θα εκτελεστεί πάντα, ανεξάρτητα αν προκλήθηκε εξαίρεση
}
Είναι σημαντικό να τοποθετείτε τα μπλοκ catch από πιο συγκεκριμένους τύπους εξαίρεσης σε λιγότερο συγκεκριμένους (βασικές κλάσεις). Το μπλοκ catch (Exception ex) πρέπει να βρίσκεται στο τέλος, καθώς πιάνει όλες τις εξαιρέσεις.