Python programlama dilinde Try–Except; yazmış olduğumuz kod bloklarında hataların önüne geçen bir yapıdır.
Aslında hataların tam olarak önüne geçmekten kasıt hatanın önlenmesi değil, ilgili programın son kullanıcıya hata vererek sonlanmasının önüne geçmeyi sağlayan bir yapıdır.
Örneğin kullanıcının sayı girmesi gereken bir bölüme sayı harici karakterler girmesi, sıfıra bölme hatası vb. hatalar oluşturduğumuz programın hata vererek sonlanmasına yol açacaktır.
Şimdi Try- Except- Finally bloklarını inceleyerek bununla ilgili örneklerimizi inceleyeceğiz.
Try bloğu, hatalar için bir kod bloğunu test etmenizi sağlar.
Except bloğu, hatayı işlemenizi sağlar.
Finally bloğu, try ve except blokların sonucuna bakılmaksızın kodu çalıştırmanıza izin verir.
İstisna işleme
Bir hata meydana geldiğinde veya bizim dediğimiz gibi bir istisna meydana geldiğinde, Python normalde durur ve bir hata mesajı oluşturur.
Bu istisnalar try ifadesi kullanılarak ele alınabilir:
Örnek:
Try bloğu, x tanımlı olmadığından bir istisna oluşturacaktır:
1 2 3 4 5 6 7 8 |
#Try bloğu, x tanımlı olmadığı için bir hata oluşturacaktır: try: print(x) except: print("Bir istisna meydana geldi") |
Çıktı:
1 2 3 |
Bir istisna meydana geldi |
Try bloğu bir hata ortaya çıkardığından, except bloğu çalıştırılacaktır.
Try bloğu olmadan, program çökecek ve bir hata verecektir.
Birden Fazla İstisna
İstediğiniz kadar istisna bloğu tanımlayabilirsiniz, örn. özel bir tür hata için özel bir kod bloğu yürütmek istiyorsanız;
Örnek:
1 2 3 4 5 6 7 8 |
try: print(x) except NameError: print("x değişkeni tanımlı değil") except: print("Başka bir şey ters gitti") |
Else
Herhangi bir hata oluşmadıysa yürütülecek bir kod bloğu tanımlamak için else anahtar sözcüğünü kullanabilirsiniz:
Örnek:
Bu örnekte, try bloğu herhangi bir hata oluşturmaz:
1 2 3 4 5 6 7 8 |
try: print("Hello") except: print("Bir şeyler yanlış gitti") else: print("Hiçbir şey ters gitmedi") |
Finally
Finally bloğu, try bloğunun bir hata oluşturup oluşturmadığına bakmaksızın çalıştırılacaktır.
Örnek:
1 2 3 4 5 6 7 8 9 10 |
#Try bloğu herhangi bir hata ortaya çıkarsa da çıkmasa da, final bloğu yürütülür: try: print(x) except: print("Birşeyler ters gitti.") finally: print("Execpt bloğu tamamlandı.") |
Çıktı:
1 2 3 4 |
Birşeyler ters gitti. Execpt bloğu tamamlandı. |
Finally bloğu, nesneleri kapatmak ve kaynakları temizlemek için yararlı olabilir.
Örnek:
1 2 3 4 5 6 7 8 9 |
try: f = open("demofile.txt") f.write("Lorum Ipsum") except: print("Dosyaya yazılırken bir hata oluştu.") finally: f.close() |
Yukarıdaki örnekte Dosya açık bırakılmadan program devam edecektir.
Bir istisna oluşturun (Raise)
Bir Python geliştiricisi olarak, bir koşul oluşursa bir istisna atmayı seçebilirsiniz.
Bir istisna atmak için, raise anahtar sözcüğünü kullanın.
Örnek: Aşağıdaki örnekte x değişkeni 0′ dan küçükse bir istisna oluşturalım.
1 2 3 4 5 6 |
x = -1 if x < 0: raise Exception("Üzgünüz, sıfırın altında sayı giremezsiniz.") |
Çıktı:
1 2 3 4 5 6 |
Traceback (most recent call last): File "demo_ref_keyword_raise.py", line 4, in <module> raise Exception("Sorry, no numbers below zero") Exception: Sorry, no numbers below zero |
raise anahtar sözcüğü, bir istisna oluşturmak için kullanılır.
Ne tür bir hatanın ortaya çıkacağını ve kullanıcıya yazdırılacak metni tanımlayabilirsiniz.
Örnek: Aşağıdaki örnek kullanıcının integer değer harici bir değer girdiğinde uyarı verecek istisnayı oluşturmaktadır.
1 2 3 4 5 6 |
x = "python" if not type(x) is int: raise TypeError("Sadece sayı girişi yapmalısınız.") |
1 2 3 |
TypeError: Sadece sayı girişi yapmalısınız. |
[…] Python Try Except […]