BaşlayınÜcretsiz Başlayın

İ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ır
Kursu Görüntüle

Egzersiz 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 try ile çalıştır,
  • ZeroDivisionError oluşursa, "Cannot divide by zero!" yazdır,
  • IndexError oluş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))
Kodu Düzenle ve Çalıştır