Junior
Ποια είναι τα χαρακτηριστικά της διαχείρισης εξαιρέσεων στην Python;
sobes.tech AI
Απάντηση από AI
Οι εξαιρέσεις στην Python είναι γεγονότα που διακόπτουν τη φυσιολογική ροή εκτέλεσης του προγράμματος. Αντιπροσωπεύουν σφάλματα ως αντικείμενα.
Χαρακτηριστικά:
- Ιεραρχία εξαιρέσεων: Όλες οι ενσωματωμένες εξαιρέσεις είναι κλάσεις και οργανώνονται σε μια ιεραρχία βασισμένη στην κληρονομικότητα από τη βασική κλάση
BaseException.# Παράδειγμα ιεραρχίας # BaseException -> Exception -> StandardError -> ... # Exception -> ArithmeticError -> ZeroDivisionError - Μπλοκ
try...except...: Ο βασικός μηχανισμός χειρισμού εξαιρέσεων.try: # Κώδικας που μπορεί να προκαλέσει εξαίρεση result = 10 / 0 except ZeroDivisionError: # Χειρισμός συγκεκριμένης εξαίρεσης print("Διαίρεση με το μηδέν!") except Exception as e: # Χειρισμός άλλων εξαιρέσεων print(f"Παρουσιάστηκε σφάλμα: {e}") - Πολλαπλά
exceptμπλοκ: Επιτρέπουν το χειρισμό διαφορετικών τύπων εξαιρέσεων με διαφορετικό τρόπο.try: # Κώδικας value = int("abc") except ValueError: print("Μη έγκυρη μορφή αριθμού.") except TypeError: print("Μη έγκυρος τύπος δεδομένων.") - Μπλοκ
else: Εκτελείται αν το μπλοκtryολοκληρωθεί χωρίς εξαίρεση.try: # Κώδικας result = 10 / 2 except ZeroDivisionError: print("Διαίρεση με το μηδέν!") else: print("Η λειτουργία ολοκληρώθηκε με επιτυχία.") - Μπλοκ
finally: Εκτελείται πάντα, ανεξάρτητα αν προέκυψε εξαίρεση ή όχι. Χρησιμοποιείται για απελευθέρωση πόρων.file = None try: file = open("myfile.txt", "r") # Ανάγνωση από το αρχείο except FileNotFoundError: print("Το αρχείο δεν βρέθηκε.") finally: if file: file.close() # Εγγυημένο κλείσιμο αρχείου - Οδηγός
raise: Χρησιμοποιείται για ρητό κάλεσμα εξαίρεσης.def divide(a, b): if b == 0: raise ZeroDivisionError("Δεν επιτρέπεται η διαίρεση με το μηδέν") return a / b try: divide(10, 0) except ZeroDivisionError as e: print(f"Σφάλμα: {e}") - Προσαρμοσμένες εξαιρέσεις: Μπορείτε να δημιουργήσετε δικούς σας κλάσεις εξαιρέσεων κληρονομώντας από το
Exceptionή άλλη υπάρχουσα κλάση εξαιρέσεων.class CustomError(Exception): pass def process_data(data): if not data: raise CustomError("Τα δεδομένα είναι κενά") try: process_data([]) except CustomError as e: print(f"Σφάλμα: {e}") - Χειρισμός εξαιρέσεων με χρήση του διαχειριστή πλαισίου
with: Απλοποιεί τη διαχείριση πόρων που απαιτούν ρητό κλείσιμο (π.χ. αρχεία).try: with open("myfile.txt", "r") as file: # Εργασία με το αρχείο content = file.read() except FileNotFoundError: print("Το αρχείο δεν βρέθηκε.") # Το αρχείο κλείνει αυτόματα κατά την έξοδο από το μπλοκ 'with' - Σύνδεση εξαιρέσεων: Κατά την επεξεργασία μιας εξαίρεσης, μπορείτε να διατηρήσετε πληροφορίες σχετικά με την προηγούμενη εξαίρεση (έμμεσα ή με χρήση
raise Exception from another_exception).
Αυτά τα χαρακτηριστικά παρέχουν έναν ευέλικτο και ισχυρό μηχανισμό διαχείρισης σφαλμάτων στην Python, επιτρέποντας τη δημιουργία πιο αξιόπιστων και ανθεκτικών σε σφάλματα προγραμμάτων.