Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

2.2 Η δομή try-except στην Python

Η δομή try-except είναι ένα σημαντικό χαρακτηριστικό της Python που χρησιμοποιείται για την αναγνώριση και την αντιμετώπιση σφαλμάτων στον κώδικα. Αναλαμβάνει την εκτέλεση μιας σειράς εντολών και σε περίπτωση εμφάνισης σφάλματος, αναλαμβάνει τη διαχείριση αυτού του σφάλματος.

Μπορείτε να χρησιμοποιήσετε τη δομή try-except στον κώδικά σας ως εξής:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
# Κώδικας που προκαλεί σφάλμα
except:
# Κώδικας που εκτελείται σε περίπτωση σφάλματος
else:
# Κώδικας που εκτελείται αν δεν υπάρχει σφάλμα
finally:
# Κώδικας που εκτελείται πάντα, ακόμα και αν υπάρχει σφάλμα
try: # Κώδικας που προκαλεί σφάλμα except: # Κώδικας που εκτελείται σε περίπτωση σφάλματος else: # Κώδικας που εκτελείται αν δεν υπάρχει σφάλμα finally: # Κώδικας που εκτελείται πάντα, ακόμα και αν υπάρχει σφάλμα
try:
  # Κώδικας που προκαλεί σφάλμα
except:
  # Κώδικας που εκτελείται σε περίπτωση σφάλματος
else:
  # Κώδικας που εκτελείται αν δεν υπάρχει σφάλμα
finally:
  # Κώδικας που εκτελείται πάντα, ακόμα και αν υπάρχει σφάλμα

Στο παραπάνω παράδειγμα, ο κώδικας που μπορεί να προκαλέσει σφάλματα περιλαμβάνεται στη δομή try. Αν η εκτέλεση του κώδικα προκαλέσει κάποιο σφάλμα, ο κώδικας που βρίσκεται στη δομή except εκτελείται. Αν δεν υπάρχει σφάλμα, ο κώδικας που βρίσκεται στη δομή else εκτελείται. Τέλος, ο κώδικας που βρίσκεται στη δομή finally εκτελείται ανεξαρτήτως του αν υπάρχει σφάλμα

Μπορείτε επίσης να χρησιμοποιήσετε τη δομή try-except με συγκεκριμένα μηνύματα σφάλματος, που μπορούν να εμφανιστούν όταν προκύψει σφάλμα. Για παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
# Κώδικας που προκαλεί σφάλμα
except ValueError:
# Κώδικας που εκτελείται αν το σφάλμα είναι ValueError
except ZeroDivisionError:
# Κώδικας που εκτελείται αν το σφάλμα είναι ZeroDivisionError
try: # Κώδικας που προκαλεί σφάλμα except ValueError: # Κώδικας που εκτελείται αν το σφάλμα είναι ValueError except ZeroDivisionError: # Κώδικας που εκτελείται αν το σφάλμα είναι ZeroDivisionError
try:
  # Κώδικας που προκαλεί σφάλμα
except ValueError:
  # Κώδικας που εκτελείται αν το σφάλμα είναι ValueError
except ZeroDivisionError:
  # Κώδικας που εκτελείται αν το σφάλμα είναι ZeroDivisionError

Στο παραπάνω παράδειγμα, δύο επιλογές except προσδιορίζουν τα σφάλματα ValueError και ZeroDivisionError αντίστοιχα.

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

Χειρισμός Εξαιρέσεων
Όταν συμβεί ένα σφάλμα, ή εξαίρεση όπως το αποκαλούμε, η Python συνήθως σταματά και δημιουργεί ένα μήνυμα σφάλματος.

Αυτές οι εξαιρέσεις μπορούν να χειριστούν με τη χρήση της δήλωσης try:

Παραδείγματα:

[adinserter block=”2″]

Παράδειγμα 1: Χρήση της δήλωσης try-except για τον χειρισμό μιας εξαίρεσης TypeError

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
x = 10 / 'a'
except TypeError:
print('An error occurred of type (TypeError).')
try: x = 10 / 'a' except TypeError: print('An error occurred of type (TypeError).')
try:
    x = 10 / 'a'
except TypeError:
    print('An error occurred of type (TypeError).')

Παράδειγμα 2: Χρήση της δήλωσης try-except-finally για τον χειρισμό μιας εξαίρεσης FileNotFoundError κατά την ανάγνωση ενός αρχείου και κλείσιμο του αρχείου με το finally block

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
file = open('example.txt', 'r')
file_content = file.read()
print(file_content)
except FileNotFoundError:
print('The file was not found.')
finally:
file.close()
try: file = open('example.txt', 'r') file_content = file.read() print(file_content) except FileNotFoundError: print('The file was not found.') finally: file.close()
try:
    file = open('example.txt', 'r')
    file_content = file.read()
    print(file_content)
except FileNotFoundError:
    print('The file was not found.')
finally:
    file.close()

Στο δεύτερο παράδειγμα, εάν δεν υπάρχει το αρχείο “example.txt”, η εξαίρεση FileNotFoundError θα πιαστεί από τη δήλωση except και θα εκτελεστεί το σχετικό μήνυμα στα αγγλικά. Στο τέλος, το αρχείο θα κλείσει ανεξάρτητα από το εάν συνέβη εξαίρεση ή όχι, χάρη στο finally block.

Μπορείτε να ορίσετε όσα blocks εξαιρέσεων θέλετε, για παράδειγμα αν θέλετε να εκτελέσετε ένα ειδικό block κώδικα για ένα ειδικό είδος σφάλματος:

Παράδειγμα Εκτυπώστε ένα μήνυμα εάν το try block προκαλεί μια NameError και ένα άλλο για άλλα σφάλματα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
print(x)
except NameError:
print("The variable x is not defined.")
except:
print("Something went wrong while executing the code.")
try: print(x) except NameError: print("The variable x is not defined.") except: print("Something went wrong while executing the code.")
try:
    print(x)
except NameError:
    print("The variable x is not defined.")
except:
    print("Something went wrong while executing the code.")

Στο παραπάνω παράδειγμα, εάν η μεταβλητή x δεν έχει οριστεί, η εξαίρεση NameError θα πιαστεί από την πρώτη δήλωση except και θα εκτυπωθεί το σχετικό μήνυμα στα αγγλικά. Εάν προκύψει οποιοδήποτε άλλο σφάλμα, η δεύτερη δήλωση except θα πιάσει την εξαίρεση και θα εκτυπωθεί το αντίστοιχο μήνυμα στα αγγλικά.

Μπορείτε να χρησιμοποιήσετε τη λέξη-κλειδί else για να ορίσετε ένα block κώδικα που θα εκτελείται εάν δεν προκληθούν σφάλματα:

Παράδειγμα
Σε αυτό το παράδειγμα, το try block δεν προκαλεί κανένα σφάλμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
print("Hello World")
except:
print("Something went wrong")
else:
print("Nothing went wrong")
try: print("Hello World") except: print("Something went wrong") else: print("Nothing went wrong")
try:
    print("Hello World")
except:
    print("Something went wrong")
else:
    print("Nothing went wrong")

Στο παραπάνω παράδειγμα, εάν δεν προκύψει καμία εξαίρεση κατά τη διάρκεια της εκτέλεσης του try block, το block του else θα εκτελεστεί και θα εκτυπωθεί το αντίστοιχο μήνυμα.

Το block του finally, αν καθοριστεί, θα εκτελεστεί ανεξάρτητα από το εάν το try block προκαλεί σφάλμα ή όχι.

[adinserter block=”3″]

Παράδειγμα:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
print(x)
except:
print("Something went wrong")
finally:
print("The 'try except' block is finished")
try: print(x) except: print("Something went wrong") finally: print("The 'try except' block is finished")
try:
    print(x)
except:
    print("Something went wrong")
finally:
    print("The 'try except' block is finished")

Στο παραπάνω παράδειγμα, αν η μεταβλητή x δεν έχει οριστεί, το μήνυμα “Something went wrong” θα εκτυπωθεί. Ωστόσο, ανεξάρτητα από το εάν προκύψει εξαίρεση ή όχι, το block του finally θα εκτελεστεί και θα εκτυπωθεί το αντίστοιχο μήνυμα.

Αυτό μπορεί να είναι χρήσιμο για το κλείσιμο αντικειμένων και τον καθαρισμό των πόρων:

Παράδειγμα:

Προσπαθήστε να ανοίξετε και να γράψετε σε ένα αρχείο που δεν είναι εγγράψιμο:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
try:
file = open("myfile.txt")
file.write("Hello World!")
except:
print("Something went wrong when writing to the file")
finally:
file.close()
try: file = open("myfile.txt") file.write("Hello World!") except: print("Something went wrong when writing to the file") finally: file.close()
try:
    file = open("myfile.txt")
    file.write("Hello World!")
except:
    print("Something went wrong when writing to the file")
finally:
    file.close()

Στο παραπάνω παράδειγμα, το αρχείο “myfile.txt” ανοίγει για ανάγνωση. Επειδή δεν καθορίζεται η διαμόρφωση του ανοίγματος (mode) στη συνάρτηση open(), το αρχείο ανοίγει αυτόματα σε κατάσταση ανάγνωσης. Ως αποτέλεσμα, η προσπάθεια εγγραφής στο αρχείο θα προκαλέσει μια εξαίρεση, η οποία θα πιαστεί από τη δήλωση except. Τέλος, το αρχείο θα κλείσει ανεξάρτητα από το εάν προκύψει εξαίρεση ή όχι, χάρη στο finally block.

Ως προγραμματιστής Python μπορείτε να επιλέξετε να προκαλέσετε μια εξαίρεση αν προκύψει μια συγκεκριμένη συνθήκη.

Για να προκαλέσετε μια εξαίρεση, χρησιμοποιήστε τη λέξη-κλειδί raise.

Παράδειγμα
Προκαλέστε ένα σφάλμα και σταματήστε το πρόγραμμα αν η μεταβλητή x είναι μικρότερη από 0:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
x = -1
if x < 0:
raise Exception("x cannot be less than 0")
x = -1 if x < 0: raise Exception("x cannot be less than 0")
x = -1

if x < 0:
    raise Exception("x cannot be less than 0")

Στο παραπάνω παράδειγμα, η συνθήκη if ελέγχει εάν η μεταβλητή x είναι μικρότερη από το 0. Αν αυτό είναι αληθές, τότε η εξαίρεση Exception θα προκληθεί και θα εμφανιστεί το αντίστοιχο μήνυμα στα αγγλικά.

Η λέξη-κλειδί raise χρησιμοποιείται για να προκαλέσει μια εξαίρεση.

Μπορείτε να ορίσετε ποιο είδος σφάλματος να προκαλέσετε και το κείμενο που θα εμφανίζεται στον χρήστη.

Παράδειγμα
Προκαλέστε ένα σφάλμα TypeError αν η μεταβλητή x δεν είναι ακέραιος:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
x = "hello"
if not isinstance(x, int):
raise TypeError("x must be an integer")
x = "hello" if not isinstance(x, int): raise TypeError("x must be an integer")
x = "hello"

if not isinstance(x, int):
    raise TypeError("x must be an integer")

Στο παραπάνω παράδειγμα, η συνθήκη if ελέγχει εάν η μεταβλητή x είναι ακέραιος. Εάν αυτό δεν ισχύει, τότε η εξαίρεση TypeError θα προκληθεί και θα εμφανιστεί το αντίστοιχο μήνυμα στα αγγλικά.

Δωρεα μεσω Paypal

Για την κάλυψη αναγκών φιλοξενίας και δημιουργίας περιεχομένου.

κατηγοριες μαθηματων

Ιστορικο ενοτητων

top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων