Διεξαγωγή διαφορετικών τύπων εξαιρέσεων στην Python
Στον ίδιο κώδικα μπορεί να χρειαστεί να διαχειριστούν διάφοροι τύποι εξαιρέσεων.
Ας υποθέσουμε ότι πρέπει να πιάσουμε μια εξαίρεση όταν γίνεται διαίρεση με το μηδέν. Σε μια τέτοια περίπτωση σφάλματος παράγεται η εξαίρεση:
ZeroDivisionError: division by zero
Για να την πιάσουμε, το όνομα της εξαίρεσης πρέπει
να γραφεί στο μπλοκ except:
try:
print(1 / 0)
except ZeroDivisionError:
print('error: do not divide by zero')
Επίσης, ας υποθέσουμε ότι έχουμε μια λίστα:
lst = [1, 2, 3]
Εάν στο μπλοκ try τοποθετηθεί κώδικας με ένα άλλο
δυνητικό σφάλμα, για παράδειγμα, με την πρόσβαση σε
μη ύπαρχον στοιχείο, τότε η εξαίρεση,
που δεν πιάστηκε στο μπλοκ except, θα προχωρήσει
παραπέρα και θα εμφανιστεί στην κονσόλα. Ως αποτέλεσμα
η εκτέλεση του κώδικα θα σταματήσει:
lst = [1, 2, 3]
try:
print(lst[4]) # θα εμφανίσει IndexError: list index out of range
except ZeroDivisionError:
print('error: do not divide by zero')
Για να λύσουμε αυτή την κατάσταση, πρέπει να καθορίσουμε σε κάθε μπλοκ το όνομα του αντίστοιχου τύπου εξαιρέσεων. Ας προσθέσουμε στον κώδικά μας εξαίρεση για την πρόσβαση σε μη ύπαρχον στοιχείο:
try:
print(lst[4])
except ZeroDivisionError:
print('error: do not divide by zero')
except IndexError:
print('error: elem is not exist')
Δίνεται ο ακόλουθος κώδικας:
txt = '2'
res1 = txt + 3
res2 = txt1
Γράψτε κώδικα για να πιάσετε τις εξαιρέσεις που παρουσιάζονται
στις μεταβλητές res1 και res2.