Μετάβαση στο κύριο περιεχόμενο
Βασικά στοιχεία Python2026-07-29 · 9 λεπτά ανάγνωσης

Χειρισμός σφαλμάτων Python: δοκιμάστε / εκτός από / αλλιώς / τελικά το 2026

Ο χειρισμός σφαλμάτων διαχωρίζει τον "κώδικα που λειτουργεί στο μηχάνημά σας" από τον "κώδικα που επιβιώνει από την παραγωγή". Το «δοκιμάστε / εκτός» της Python φαίνεται απλό, αλλά η πλήρης μορφή τεσσάρων λέξεων-κλειδιών — «δοκιμάστε / εκτός / αλλιώς / τελικά» — κωδικοποιεί έναν εκπληκτικό όγκο δομής που παραλείπουν τα περισσότερα μαθήματα.

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

Οι τέσσερις λέξεις-κλειδιά, ακριβώς

▶ PYTHONeditable · runs in your browser

Η ρήτρα «άλλο» χρησιμοποιείται ελάχιστα. Λέει "αυτό το επόμενο κομμάτι εξαρτάται από την επιτυχία της προσπάθειας, αλλά δεν θέλω να προστατεύεται από το ίδιο παρά μόνο". Είναι το σωστό μέρος για τη συνέχιση της ευτυχισμένης διαδρομής — αν το βάλετε μέσα στο "try" εντοπίζονται κατά λάθος άσχετες εξαιρέσεις από το "ship(result)".

Τα έξι μοτίβα

1. Δοκιμάστε ξανά σε παροδική αποτυχία

▶ PYTHONeditable · runs in your browser

Κανόνας: δοκιμάστε ξανά ΜΟΝΟ σε παροδικά σφάλματα (δίκτυο, χρονικό όριο λήξης, 429, 503). Ποτέ μην επαναλάβετε τα «ValueError», «KeyError», «TypeError» — αυτά είναι σφάλματα κώδικα και η επανάληψη απλώς εκτελεί το σφάλμα τρεις φορές.

2. Φύλαξε με «άλλο».

▶ PYTHONeditable · runs in your browser

Το "άλλο" εγγυάται ότι το "αρχείο" άνοιξε με επιτυχία ΚΑΙ εκκαθαρίζει τα πεδία με "με". Σημείωση: Το "process()" μπορεί να αυξήσει το "ValueError" — αυτό θα διαδοθεί, ΔΕΝ θα συλληφθεί από το "εκτός από το FileNotFoundError".

3. Εκκαθάριση με «τελικά» (πριν υπήρχε το «με»)

▶ PYTHONeditable · runs in your browser

Στον σύγχρονο κώδικα θα χρησιμοποιούσατε το «with db.connect() ως conn:» — «με» είναι το σάκχαρο πάνω από το «δοκιμάστε / τελικά» για την κοινή περίπτωση καθαρισμού. Προσεγγίστε το ρητό «τελικά» μόνο όταν ο πόρος δεν υποστηρίζει το πρωτόκολλο διαχείρισης περιβάλλοντος.

4. Εκ νέου αύξηση με πρόσθετο περιβάλλον

▶ PYTHONeditable · runs in your browser

Το raise NewException(...) από το e ενώνει την αρχική εξαίρεση στη νέα, ώστε το traceback να δείχνει ΚΑΙ ΤΑ ΔΥΟ. Ποτέ μην γράφετε "raise NewException(str(e))" — που απορρίπτει το αρχικό traceback.

5. Πιάστε τη στενότερη εξαίρεση που μπορείτε

▶ PYTHONeditable · runs in your browser

Κανόνας: όσο στενότερο το εκτός, τόσο το καλύτερο. Εάν δεν ξέρετε τι μπορεί να προκαλέσει η «διαδικασία», εκτελέστε την και μάθετε. Το "εκτός Εξαίρεσης:" είναι μια μυρωδιά κωδικού στο 90% των περιπτώσεων.

6. «ανύψωση» μέσα στο «εκτός» — σηκώστε ξανά καθαρά

▶ PYTHONeditable · runs in your browser

Το γυμνό «raise» διατηρεί ανέπαφο το αρχικό traceback. Ποτέ μην κάνετε "raise e" (η Python 3 είναι έξυπνη γι' αυτό, αλλά το γυμνό "raise" είναι η ιδιωματική μορφή).

Προσαρμοσμένες εξαιρέσεις — όταν αξίζει τον κόπο

Ορίστε τη δική σας τάξη εξαίρεσης όταν:

1. Οι καλούντες πρέπει να "εκτός από το MyError:" συγκεκριμένα (δηλαδή, έχετε ένα καλούμενο API και οι χρήστες πρέπει να διακλαδώσουν ανάλογα με τον τύπο αποτυχίας).

2. Η βιβλιοθήκη/η υπηρεσία σας δημιουργεί πολλά σχετικά σφάλματα που μοιράζονται το περιβάλλον.

▶ PYTHONeditable · runs in your browser

Τώρα οι καλούντες μπορούν να συλλάβουν ευρέως («εκτός Σφάλμα πληρωμής») ή στενά («εκτός από το Σφάλμα Απόρριψης Κάρτας»). Τα δομημένα χαρακτηριστικά στην εξαίρεση (e.card_last4) επιτρέπουν στους χειριστές σφαλμάτων να δημιουργούν χρήσιμο UX χωρίς να αναλύουν μηνύματα εξαίρεσης.

Αντί-μοτίβο: που ορίζει μια προσαρμοσμένη εξαίρεση που υπάρχει μόνο για να ανέβει μία φορά και να μην συλληφθεί ποτέ. Αυτό είναι απλώς "αύξηση τιμήςError("...")". Οι προσαρμοσμένες εξαιρέσεις κερδίζουν το βάρος τους από την σύλληψη.

Τρία αντι-μοτίβα που κρύβουν σφάλματα

Αντι-μοτίβο 1: Γυμνό εκτός

▶ PYTHONeditable · runs in your browser

Το γυμνό «εκτός» συλλαμβάνει σήματα που πρέπει να βγουν από το πρόγραμμα (Ctrl-C, «sys.exit», «MemoryError»). Μην το γράφετε ποτέ αυτό. Εάν θέλετε πραγματικά να συλλάβετε κάθε μη μοιραία εξαίρεση, χρησιμοποιήστε το "εκτός Εξαίρεσης:" — το οποίο ΑΚΟΜΑ πιάνει πάρα πολύ, αλλά τουλάχιστον σέβεται το Ctrl-C.

Αντι-μοτίβο 2: Σίγαση χωρίς καταγραφή

▶ PYTHONeditable · runs in your browser

Κάθε εξαίρεση που συλλαμβάνεται θα πρέπει είτε να αντιμετωπίζεται (με συγκεκριμένο εναλλακτικό) είτε να καταγράφεται. Το "pass" σε ένα εκτός είναι ένα σφάλμα σε αργή κίνηση — ο κώδικας φαίνεται να λειτουργεί ενώ απορρίπτει αθόρυβα δεδομένα.

▶ PYTHONeditable · runs in your browser

Αντι-μοτίβο 3: «εκτός Εξαίρεσης:» γύρω από τα πάντα

▶ PYTHONeditable · runs in your browser

Πρόβλημα: εάν η "stripe.charge" ήταν επιτυχής αλλά η "send_receipt" απέτυχε, ο πελάτης χρεώθηκε ΚΑΙ καταπιήσατε το σφάλμα. Το «εκτός» καλύπτει τέσσερις διαφορετικές λειτουργίες αποτυχίας και δεν μπορείτε να τις ξεχωρίσετε.

Διόρθωση: περιορίστε το πεδίο δοκιμής + διακλαδώστε το εκτός από το όριο της μονάδας.

▶ PYTHONeditable · runs in your browser

Κάθε προσπάθεια καλύπτει ΜΙΑ λειτουργία. Κάθε εκτός ξέρει τι να κάνει για ΑΥΤΗ τη συγκεκριμένη αποτυχία. Αυτός είναι ο χειρισμός σφαλμάτων ποιότητας παραγωγής.


Ο καλός χειρισμός σφαλμάτων είναι περισσότερο σχεδιασμός παρά σύνταξη. Το "try / εκτός από / άλλο / τελικά" σας δίνει τα εργαλεία. η πειθαρχία επιλέγει το σωστό εκτός από τον τύπο, το στενότερο δυνατό πεδίο δοκιμής και ποτέ να μην αποσιωπά τα σφάλματα που δεν καταλαβαίνετε.

Επόμενο βήμα: το Foundations track έχει 10 μαθήματα σχετικά με τον χειρισμό εξαιρέσεων, προσαρμοσμένες εξαιρέσεις και τη δήλωση «με» — με την πραγματική Python να εκτελείται στο πρόγραμμα περιήγησής σας.

Είστε έτοιμοι να το δοκιμάσετε;

15 μαθήματα δωρεάν μετά από δωρεάν εγγραφή — χωρίς κάρτα. Δοκιμάστε την πλατφόρμα και μετά αποφασίστε.

Ξεκινήστε δωρεάν →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.