Python’da Hatalar ve İstisnalar

Programcıların karşılaşabileceği hataları üç sınıfta toplamak mümkündür. Mantık hataları, Yazım Hataları ve Çalışma Zamanı Hataları şeklindedir.

Mantık Hataları: Programlama dillerinde mantık hatalarının tespit edilmesi ve çözüme kavuşturulması oldukça zordur. Mantık hatalarında program çalıştırıldığı herhangi bir uyarı veya hata mesajı alınmaz. Bu hata beklenen sonucun alınmadığı durumlarda tespit edilir. Çözüm için programlamanın en başından itibaren tüm algoritmaların kontrol edilmesi gerekecektir.

Yazım Hataları: Mantık hatalarına göre tespit edilmesi daha kolaydır. Günümüzde kullanılan çoğu programlama dilinde (C#, C++, Java gibi) ve Python programlama dilinde yorumlayıcıların yardımıyla kod yazım (syntax) hataları kolayca tespit edilmektedir. Python programlama dilinde yorumlayıcı zaten satır bazlı olarak kod yazımının denetimini gerçekleştirdiği için herhangi bir yazım hatasını verdiği alanın düzeltimi sağlanmadan bir alt satırdaki koda geçiş yapmaz.

Çalışma Zamanı Hataları: Programın çalışması esnasında beklenmedik bir durumun ortaya çıkması sonucu oluşan hatalara çalışma zamanı hataları (Run Time Errors) denir. “Run time errors” gibi hatalara karşı alınacak önlemlere de “ hata yakalama” denir. Çalışma zamanı hataları istisna (exception) kavramıyla da bağdaştırılmıştır. Hata yakalama kavramı da bazı bilimsel çalışmalarda istisna işleme (exception handling) olarak ifade edilmektedir.

Hata Yakalama: Bir hata tespit edilip hangi sınıfta olduğuna karar verilir. Yazım hataları üzerine fazla yoğunlaşmak gerekmez çünkü yazım hatalarını Python’da yorumlayıcı açık bir şekilde ifade etmektedir. Diğer programlama dillerinde ise editör programları (IDLE, Eclipse gibi) tespit edebilmektedir. Yazılımcıların en istemedikleri durum programın çalışma esnasında meydana gelebilecek hatalardır. Bu hataların düzeltilmesi ciddi bilgi donanımı ve zaman istemektedir. Python’da tüm istisna (exception) durumları BaseException sınıfı içerisinde alt sınıflar olarak tanımlanmıştır. BaseException sınıfı içerisinde 4 farklı alt sınıf bulunmaktadır. Bunlar; SystemExit, KeyboardInterrupt, GeneratorExit, Exception sınıflarıdır.

Python programlama dilinde hata yakalama işlemleri try, except, else ve finally olmak üzere dört farklı anahtar sözcük kullanılır. Hata yakalama işlemlerinin temelini try ile except arasındaki kod blokları oluşturur. Try ve except anahtar kelimeleri birlikte kullanılmaktadır. Try tek başına kullanılamaz. Aynı yapı üzerinde seçim işlemleri gerekiyorsa else ve finally ifadeleri de kod blokları arasına yerleştirilir. Bir işlem üzerinde hata olsun veya olmasın her haliyle çalıştırılmak isteniyorsa try -except bloğunun arasına finally anahtar kelimesi de eklenir.