python logo

Python İstisna İşleme (try-except-finally)

Merhaba arkadaşlar, python’ın temelleri üzerine bayadır yazı yazmamıştım. Bu yazımızda hata yaptığımızda programımız patlamasın diye önlemler almamıza yardımcı olan, yabancı kaynaklarda Exception Handling olarak geçen, Türkçe karşılığı İstisna işleme olarak çevirilen konuyu anlatmaya çalışacağım.

Python’da istisnaları yakalayabilmek için try/except deyimi kullanılmaktadır. Try, dene; except ise olmazsa anlamına gelmektedir. Bu deyimleri kullanarak beklenmeyen hata geldiğinde yapılması gerekeni programımıza ekleyebiliyoruz. Basit bir örnek vermek gerekirse;

try:
   sayi1 = 7
   sayi2 = 0
   print (sayi1 / sayi2)
   print("Hesap Yapıldı")
except ZeroDivisionError:
   print("Bir hata oluştu.")
   print("Sıfıra bölme hatası")

# Çıktımız
"""
Bir hata oluştu.
Sıfıra bölme hatası.
"""

Bu şekilde try ifadeleri birden fazla farklı farklı istisnalar için de olabilir. Birden fazla except bloğu kullanılabilir. Birden fazla hata türü except ifadeleri içine yazılabilir. Hemen aşağıya bir örnek ekliyorum.

try:
   degisken = 10
   print(degisken + "merhaba")
   print(degisken / 2)
except ZeroDivisionError:
   print("Sıfıra Bölme hatası")
except (ValueError, TypeError): #ValueError ve TypeError aynı except ifadesi içinde...
   print("Hata bulundu.")

# Çıktımız Hata bulundu. olacaktır.

Bu şekilde hata türlerini belirtmeden de hatalarımızı yakalayabiliriz. Fakat bu tarz hata kapatma yöntemleri program içinde hataların görülemediği zamanlarda uygulanmalıdır. Hemen örneğini de ekleyeyim.

try:
   kelime = "DNCR"
   print(kelime/ 0)
except:
   print("Bir hata bulundu.")

# Çıktımız "Bir hata bulundu." olacaktır.

Gördüğünüz gibi herhangi bir hata türü yazmadan da tüm hataları yakalama kodumuz yukarıdaki gibidir. Bu tarz hataları kapatmak özellikle kontrolü kullanıcıya verdiğinizde çok önemlidir. Hiçbir kullanıcı programı küt diye kapansın istemez 🙂

Finally İfadesi

Bu hataları yakalarken bir deyimimiz daha var o da finallly deyimi. Bu ifade ise hata olsun veya olmasın en son çalışması gereken kodları içinde barındırır. try-except blokları altında yer alır. Son bir örnek de finally kavramını pekiştirmek için ekliyorum.

try:
   print(1)
   print(10 / 0)
except ZeroDivisionError:
   print(bilinmeyen_degisken)
finally:
   print("En son yürütülür.")

Bu kodun çıktısını da siz deneyin bakalım ne olacak.

[the_ad id=”1292″]

Umarım faydalı olmuştur. Birkaç örnekle istisnai hataları gidermeyi, istisna işleme konusunu anlatmaya çalıştım.

 

Bunlara Göz Atmak İsteyebilirsiniz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir