Path: blob/master/Hatalar ve İstisnalar/Hata Yakalama - try,except,finally.ipynb
765 views
Hata Yakalama - try,except,finally
Bu konuda programlarımızda hata verebilecek kodları yakalayabildiğimiz try,except,finally bloklarını ve fonksiyonlarda kendi hatalarımızı nasıl fırlatacağımızı öğreneceğiz.
try , except blokları
try ,except bloklarının yapısı şu şekildedir;
Hemen try , except ile ilgili örneklerimize geçelim.
Örnek 1
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-2-8575229c6738> in <module>()
----> 1 a = int("324234dsadsad") # Burası ValueError hatası veriyor.
ValueError: invalid literal for int() with base 10: '324234dsadsad'
Burada a = int("324234sadsad") kodu sıkıntı verdiği için program bu bloktan çıkarak direk except bloğuna girdi ve "Hata oluştu" yazdı. try ,except bloğu bitince program ekrana "Bloklar sona erdi" yazdırdı.
Örnek 2
Şimdi de 2 adet sıkıntı çıkaran kodumuz bulunsun. Birincisi ZeroDivisionError , diğeri ValueError hatası.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-11-42c3f7bd0a21> in <module>()
----> 1 a = int("32434aaa")
ValueError: invalid literal for int() with base 10: '32434aaa'
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-12-41b41279a019> in <module>()
----> 1 print(2 / 0)
ZeroDivisionError: division by zero
Şimdi de bu hataları yakalamaya çalışalım.
İstersek bu iki hatanın aynı except bloğuna girmesini sağlayabiliriz.
İşte burada gördüğümüz gibi bir kodda herhangi bir hata olduğunda try,except blokları ile hataları yakalayabiliyoruz.
try,except,finally blokları
Bazen programlarımızda her durumda mutlaka çalışmasını istediğimiz kodlar bulunabilir.Bunun için biz kendi try,except bloklarına ek olarak bir tane finally bloğu ekleyebiliriz. finally blokları hata olması veya olmaması durumunda mutlaka çalışacaktır. Yapısı şu şekildedir;
Hemen basit bir örnek yazalım.
Hata fırlatmak
Bazen kendi yazdığımız fonksiyonlar yanlış kullanılırsa kendi hatalarımızı üretip Pythonda bu hataları fırlatabiliriz. Bunun içinde raise anahtar kelimesini kullanacağız. Hata fırlatma şu şekilde yapılabilmektedir;
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-23-affc1a0b50fd> in <module>()
----> 1 print(terscevir(12))
<ipython-input-20-8f7e1cd7e827> in terscevir(s)
2 def terscevir(s):
3 if (type(s) != str):
----> 4 raise ValueError("Lütfen doğru bir input girin.")
5 else:
6 return s[::-1]
ValueError: Lütfen doğru bir input girin.
Bu fonksiyondan fırlatılan hatayı da try,except bloklarıyla yakalayabiliriz.
İşte Pythonda hata yakalama konusu bu kadar ! Artık hata yakalamayı kullanarak programlarımızı daha güvenli yazabiliriz.