Press "Enter" to skip to content

Python Try Except Hatalar ve İstisnalar

Yaşar SAFALI 0

Python Try Except

Geliştirilen programlarda bazen hata ile karşılaşılabilir.Bu hatalar bazen programcıdan,bazen istisna durumlardan bazende program kusurlarından kaynaklanabilir.Python Try Except adlı yazımızda bu hataları ve bu hataların yakalanışlarını inceleyeceğiz.

Programcıdan kaynaklı hatalar genelde programcının dikkatsizliği sonucu yapılır.Örneğin bir yerde syntax hatası yapabilir.

Program kusurları ise programın çalışırken hata vermeyip ancak fonksiyonunu yanlış yerine getirmesidir.

Son hata türü ise istisna durumlardır.Örneğin iki sayının bölümünü hesaplayan bir fonksiyon yazdınız.Ama bölen sayı fonksiyona 0 verildi.Python burada ZeroDivisionError: division by zero  istisna hatasını verecektir.Şimdi bu hataların nasıl yakalanacağını inceleyelim.

Try Except

Python’da hata yakalama işlemi try except blokları sayesinde gerçekleşir.Try bloğuna hata yapabilecek kodlar yazılır.Except bloğuna ise hata durumunda yapmasını istediğimiz kodlamalar yazılır.Bu sayede program son kullanıcıya hatayı değil bizim istediğimiz hata mesajını yazar.İlk olarak try except kullanmadan bir örnek yapalım.

a=5
b=0
print(a/b)

Output:

Traceback (most recent call last):
File “C:/Users/yasar/PycharmProjects/python2/deneme.py”, line 3, in <module>
print(a/b)
ZeroDivisionError: division by zero

 

Görüldüğü gibi hata  olduğu gibi ekrana çıktı olarak verildi.Bu programlarda istenilen bir durum değildir.

Şimdi try ve except bloğunu kullanalım.

try:
    a=5
    b=0
    print(a/b)
except:
    print("Sayı Sıfıra Bölünemez")

Output:

Sayı Sıfıra Bölünemez

Görüldüğü gibi kullanıcı hatayı değil bizim istediğimiz mesajı gördü.Kısaca try except bloğunun genel kullanımı şu şekildedir.

try:

   #kodlamalar

except:

   #hata durumunda yapılacak kodlamalar

Bu ifade genel bir hata yakalama ifadesidir.Yani programda birden çok hata çeşidi varsa bile kullanıcıya tek tip mesaj verir.Biz bu hata mesajını özelliştirmek istediğimizde except bloğuna hatanın türünü ekleriz.

Örneğin

try:
    a=5
    b=0
    print(a/b)
    
except ZeroDivisionError:
    print("Sayı Sıfıra Bölünemez")

Output:

Sayı Sıfıra bölünemez.

try:
    a=5
    b=0

    print(a+"asa")
except TypeError:
    print("String ve int ifade Toplanamaz")

Output:

String ve int ifade Toplanamaz

Şimdi de çoklu hata durumlarının birlikte kullanımını inceleyelim.

try:
    a=5
    b=0

    print(a+"asa")
except TypeError:
    print("String ve int ifade Toplanamaz")
except ZeroDivisionError:
    print("Sayı Sıfıra Bölünemez")

Output:

String ve int ifade Toplanamaz
Hata türünü belirttiğimiz için Python yapılan hatanın mesajını ekrana yazdı diğer hata mesajını ekrana yazmadı.

Try-Except-As

Bazen Python tarafından verilen hata mesajının içeriği bilmek gerekebilir.Bu gibi durumlarda as kullanılır.

try:
    a=5
    b=0

    print(a+"ali")
except TypeError as hata:
    print("String ve int ifade Toplanamaz",hata)

Output:

String ve int ifade Toplanamaz unsupported operand type(s) for +: ‘int’ and ‘str’

Try-Except-Finally Blokları

Try ve except bloğuna ek olarak bir de finally bloğu vardır.Bu blok kod hata verse de vermese de mutlaka çalışır.O yüzden bu blokta her durumda çalışmasını istediğimiz kodlar yer almalıdır.

Örneğin try kısmında bir veritabanı yada bir dosya açıyorsunuz.Except kısmında ise olsaı hata mesajını ekrana yazdırıyorsunuz.Finally kısmında yapılması gereken ise program hata versede vermesede veritabanının ve dosyanın kapatılmasıdır.

try:

  dosya=open("yazilim.txt","w")
except IOError:
    print("Dosya Bulunamadı")
finally:
  dosya.close()

 

Try-Except-Else Blokları

Python’da yer alan hataları gruplandırmak için kullanılır.

try:
    a=5
    b=0

    print(a+"ali")

except TypeError as hata:
    print("String ve int ifade Toplanamaz",hata)
else:
    try:
     print(a/b)
    except ZeroDivisionError as hata:
     print("Sıfıra Bölünme Hatası",hata)

 

 

raise

Programda herhangi bir hata olmasa bile kullanıcıya hata mesajı yazdırmak isteyebiliriz.Örneğin kullanıcıdan bir isim girmesini istediniz.Kullanıcı ali ismini girdi.Siz ali ismini istemiyorsanız raise deyimiyle kullanıcıya bir mesaj verebilirsiniz.

Örneğin

isim=input("Lütfen Bir İsim Giriniz")
if isim=="ali":
    raise  Exception("Ali ismini giremezsiniz")

Output:

raise Exception(“Ali ismini giremezsiniz”)
Exception: Ali ismini giremezsiniz

 

Bir sonraki yazımızda Görüşmek Dileğiyle.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir