Τμήμα Πληροφορικής και Τηλεπικοινωνιών - Άρτα
Πανεπιστήμιο Ιωαννίνων
Γκόγκος Χρήστος
http://chgogos.github.io/
Εαρινό εξάμηνο 2020-2021
Οι εξαιρέσεις συνιστούν "μη κανονικής" καταστάσεις κατά την εκτέλεση του προγράμματος οι οποίες μπορούν ωστόσο να συμβούν (π.χ. προσπάθεια ανοίγματος αρχείου που δεν υπάρχει).
Ο χειρισμός των εξαιρέσεων στην Python γίνεται με προτάσεις try/except/finally
Παραδείγματα συνηθισμένων εξαιρέσεων:
Πλήρης λίστα των εξαιρέσεων μπορεί να βρεθεί στην τεκμηρίωση της γλώσσας.
try:
x = 1 / 0
except ZeroDivisionError:
print("Διαίρεση με το μηδέν")
print("Συνέχεια")
Διαίρεση με το μηδέν Συνέχεια
a_list = [1, 2, 3]
try:
a_list[10]
except IndexError:
print("Δείκτης εκτός ορίων λίστας")
print("Συνέχεια")
Δείκτης εκτός ορίων λίστας Συνέχεια
a_dict = {"a": 1, "b": 5}
try:
x = a_dict["c"]
except KeyError:
print("Αναφορά σε κλειδί που δεν υπάρχει στο λεξικό")
print("Συνέχεια")
Αναφορά σε κλειδί που δεν υπάρχει στο λεξικό Συνέχεια
a_list = [1, 2, 3]
a_dict = {"a": 1, "b": 5}
try:
a_list[10]
x = a_dict["c"]
x = 1 / 0
except IndexError:
print("Δείκτης εκτός ορίων λίστας")
except KeyError:
print("Αναφορά σε κλειδί που δεν υπάρχει στο λεξικό")
except:
print("Λάθος")
print("Συνέχεια")
Δείκτης εκτός ορίων λίστας Συνέχεια
a_list = [1, 2, 3]
a_dict = {"a": 1, "b": 5}
try:
a_list[10]
x = a_dict["c"]
x = 1 / 0
except (IndexError, KeyError, ZeroDivisionError):
print("Λάθος")
print("Συνέχεια")
Λάθος Συνέχεια
# try/except/finally
# Oι εντολές στο finally εκτελούνται αν συμβεί exception. Αν δεν συμβεί exception τότε δεν εκτελούνται οι εντολές στο finally
a_list = [1, 2, 3]
try:
a_list[10]
except IndexError:
print("Δείκτης εκτός ορίων λίστας")
finally:
print("Εντολές εκκαθάρισης")
print("Συνέχεια")
Δείκτης εκτός ορίων λίστας Εντολές εκκαθάρισης Συνέχεια
# try/except/else/finally
# οι εντολές στο else εκτελούνται αν δεν συμβεί exception (σε αυτή την περίπτωση θα εκτελεστούν και οι εντολές του finally)
a_list = [1, 2, 3]
try:
a_list[1]
except IndexError:
print("Δείκτης εκτός ορίων λίστας")
else:
print("Όλα εντάξει")
finally:
print("Εντολές εκκαθάρισης")
print("Συνέχεια")
Όλα εντάξει Εντολές εκκαθάρισης Συνέχεια
# raise
try:
raise RuntimeError
except RuntimeError:
print("A RuntimeError occured")
A RuntimeError occured