Python'da İstisna Yakalama
Python'da diğer programlama dillerine kıyasla istisnalara neden olan çok fazla durum vardır.
Bunları daha ayrıntılı inceleyelim. Diyelim ki bir listemiz var:
lst = [1, 2, 3]
Listede var olmayan bir elemana erişelim:
print(lts[4])
Kod çalıştırıldıktan sonra bir hata (istisna) verilecektir:
IndexError: list index out of range
Ancak istisna vermeden çalışmaya devam etmemiz
gerekiyorsa, onu try-except yapısı
kullanarak yakalamamız gerekir. Şu sözdizimine
sahiptir:
try:
# istisnaya neden olan kod
except:
# hatanın işlenmesi
try bloğunda, bir istisna içerebilecek
kod bulunmalıdır. Eğer bu kodu çalıştırırken
bir istisnai durum ortaya çıkarsa, kodun
çalışması durmaz, except bloğundaki
koda geçilir. Bu blokta, oluşan hatanın
özünü mümkün olduğunca doğru tanımlayan bir
mesajın çıktısını yazmalısınız.
Eğer try bloğu çalıştırılırken
herhangi bir istisnai durum oluşmazsa,
faydalı kod sadece çalışır ve except
bloğundaki kod çalışmaz.
Listede var olmayan bir elemana erişirken
oluşan istisnamızı yakalayalım. Bunun
için try bloğuna potansiyel hatayı
içeren kodu yerleştireceğiz. except
bloğunda ise konsola 'error: elem is not exist'
mesajının çıktısını göstereceğiz:
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Kod çalıştırıldıktan sonra şu çıktılanacaktır:
'error: elem is not exist'
try-except yapısını öğrendikten sonra
yazdığınız kodun stili değişmelidir. Artık
istisnai bir durumun oluşabileceği tüm
yerleri try içine sarmalamalı ve
except bloğunda bu istisnaya tepkiyi
yazmalısınız.
Kullanıcıdan iki sayı isteyin. Birini diğerine bölün. Sıfıra bölme istisnai durumunu yakalayın.
Kullanıcıdan bir sayı isteyin. Bu sayının karekökünü bulun. Negatif bir sayının köklünü alma istisnai durumunu yakalayın.
Bir liste verildi. Kullanıcıdan bir tam sayı isteyin. Kullanıcının girdiği numaradaki liste elemanını elde edin. Kullanıcı listenin aralığı dışında bir sayı girdiğinde oluşacak istisnai durumu yakalayın.
Aşağıdaki kod verildi:
num = '5'
res = num + 2
print(res)
Bu kodda ne yanlış? Eksikliklerini düzeltin.
Aşağıdaki kod verildi:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Bu kodda ne yanlış? Eksikliklerini düzeltin.