İstisnaları yakalama
Kendi özel istisnalarını yazmadan önce, istisna yakalamanın temellerinin tamam olduğundan emin olalım.
Bu egzersizde sana iki argüman alan invert_at_index(x, ind) adlı bir fonksiyon veriliyor: bir liste x ve bir indeks ind. Fonksiyon, listedeki o indeksteki elemanın tersini alır. Örneğin invert_at_index([5,6,7], 1) 1/6 yani 0.166666 döndürür.
Kodu olduğu gibi çalıştır ve konsoldaki çıktıyı incele. Bu fonksiyonda iki riskli işlem var: Birincisi, tersini almaya çalıştığımız elemanın değeri 0 ise, kod bir ZeroDivisionError istisnasına neden olur. İkincisi, fonksiyona verilen indeks listenin aralığı dışında ise, kod bir IndexError oluşturur. Her iki durumda da betik kesintiye uğrar; bu istenmeyebilir.
Bu egzersiz
Python'da Nesne Yönelimli Programlama
kursunun bir parçasıdırEgzersiz talimatları
Fonksiyonun içinde iki except bloğu olan bir try - except - except deseni kullanarak aşağıdaki iki istisnayı yakala ve yönet:
- Kodu olduğu gibi
tryile çalıştır, ZeroDivisionErroroluşursa,"Cannot divide by zero!"yazdır,IndexErroroluşursa,"Index out of range!"yazdır
Doğru yaptığını, kod hatasız çalışıyor ve konsoldaki çıktı şu şekildeyse anlarsın:
0.16666666666666666
Cannot divide by zero!
None
Index out of range!
None
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
# MODIFY the function to catch exceptions
def invert_at_index(x, ind):
return 1/x[ind]
a = [5,6,0,7]
# Works okay
print(invert_at_index(a, 1))
# Potential ZeroDivisionError
print(invert_at_index(a, 2))
# Potential IndexError
print(invert_at_index(a, 5))