Pythonda olası hataları except ifadesi ile yakalanır. Bu ifadeden önce çalıştırılmasını istediğimiz kodları try ifadesine yazarız.
ÖRNEK
ˋtry:
Hata aranacak kod...ˋ
ˋexcept:
hata yakalanınca işlenecek kodlar...ˋ
Programı yazarken bazen tanımlanmamış bir değişkeni ya da nesneyi kullanmaya çalışırız (bazen unutularak bazen de değişken adını yanlış yazmakla).Bir değişkenin tanımlı olup olmadığını denetleme ihtiyacımız olabilir. örneğin x değişkeni tanımlanmadıysa:
ˋ>>> X
Tracaback (most recent call last):
file "<pyshell#0>", line 1, in <module>``
x
`` NameError: name 'X' is not definedˋ
Böyle bir durumda programımız basit bir hatadan dolayı sonlanacak ve daha önceki verilerimiz kaybolacaktır.
Bunu try-except ile denetleyelim.
ˋtry:
print(x)
except:
print("maalesef x değişkeni tanımlı değil")ˋ
Bu kodda ekrana bastıralacak kod şu şekildedir = ˋÜzgünüm x değişkeni tanımlı değilˋ
Kullanıcıdan yaşını soran bir program yazmak istiyorsanız .Eğer kullanıcı yaşına sayı değeri yerine harf girerse , muhtemelen ˋint()ˋ işlevini kullanacaksınız ve hata ile karşılaşacaksınız ve program sonlanacak:
ˋyas = input("Yaşınızı Giriniz :")``
``yas = int(yas)``
print("üç yıl sonra %d yaşında olacaksınız" % (yas+3))ˋ
Programımızı çalıştıralım ve sorulduğunda sayı yerine yazı ile yaşımızı girelim:
ˋYaşınızı Giriniz : yirmi
Traceback (most recent call last):
file "Y : /Documents/python_ogrenıyorum/programlarım/pr-11-1.py" , line 7 , in<module>
yas = int(yas)``
`` ValueError: invalid literal for int() with base 10: 'yirmi' ˋ
Gördüğünüz gibi program hatanın olduğu yerde kesildi sonraki kodu işletilmedi.
Şimdi try-except ile bu hatayı yakalayalım:
`ˋyas = input(" Yaşınızı Giriniz : ")``
try:
yas = int(yas)
print("Üç yıl sonra %d yaşında olacaksınız" % (yas +3))
``except ValueError:
print(" Sayı değer girseydiniz üç yıl sonra hangi yaşta olacağınızı söyleyecektim ")ˋ
**NOT : except, yazarken yanına hatanın türünüde yazın. bunu hata verilen kodun try - except yazmadan önce aldığınız kodda görebilirsiniz. **
UMARIM ANLAŞILIR OLMUŞTUR İYİ ÇALIŞMALAR 😁