Python Hata Yakalama (Python try-exception Kullanımı)

Python Hata Yakalama (Python try-exception Kullanımı)

Tarhi : 12-09-2021 11:55:58 | Yazar : ÇAĞLAR BOSTANCI

Merhaba. Bu yazımda sizlere Python’da hata yakalamayı yani try-except yapısından bahsedeceğim. Tabi bir çok yazılım dilinde bu yapı var ve kullanılmaktadır. Peki Python hata yakalamanın bize nasıl bir avantajı var?

Bir program oluşturulurken olası güvelik saldırılarına ve hatalı veri girişlerine karşı önlemleri almak gerekmektedir. Öreğin bir kullanıcıdan adını girmesini istediğiniz alana özel karater girebilir. Tabi bunu bir for yapısıyla kontrol edebilirsiniz. Bu durum olası bir hataın veya yanlış girilen bir verinin önüne geçmenizi sağlar. Peki sayı girmesini istediğiniz durumlarda olacak. Kullanıcılar buraya metinsel ifadalerde girebilir. Örneği input() ile almış olduğunuz bir değeri sayı olup olamadığını kontrol etmede ve int değere çevirmeden bir sayayı ile topladığıızda hata almanız olası. İşte bu hata durumlarının bir çoğunda nasıl davranılması gerektiği işlemlerini try-except yapsı ile kordie edebilmekteyiz. Buna bir örnek verelim.

Bu programda kullanıcıdan yaşının girilmesi istenmiştir ama kullanıcı karater girişinde bulunmuştur ve ekrana çıktısında belirtilen hata mesajı alınmıştır şimdi try-except ile bunu önleyelim.

Yukarıdaki örnektende anlaşılacağı gibi girilen bir hatalı veri sonrasında ölümcül bir hata basılmadı. Ölümcül hata yerine bizim vermiş olduğumuz hata mesajı basıldı.

Yukardaki except: tanımlaması olası bütün hatalarda çalışacak ve aynı hata mesajını verecektir. İsterseiz hataları sınıflandırabilir ve her hataya özgü bir mesaj verebilirsiniz. Bunu aşağıdaki örnekle anlatalım.

Yukarıdaki örnekte except ValueError: kullanımı hatayı sınıflandırdığımız anlamına gelmektedir. Bu hata mesaj sayı yerine harf girildiğinide çalışaktır. Yine diğer hatalarda ise except: bloğunda tanımlanan hata mesajı ekrana basılacaktır.

İsterseniz hataları aşağıdaki gibi gruplayabilirsiniz.

except (ValueError, ZeroDivisionError): hataları bu şekilde hataları gruplayabilir ve ilgili hatalarda bu mesajı basabiliriz.

Python try-except-as Kullanımı

Bildiğiniz gibi bir hatayla karşılaşıldığıda hatanın adı yazdıktan sonra hata açıklaması alınmatadır. try-except-as yapısıyla bu hata açıklamalarınıda alabilirsiniz. Aşağıdaki örenekte sınayalım

Anlaşıldığı gibi oluşan bir geçersiz değer karşında hata mesajı hata adında bir değişkene atanarak ilgili alanda mesejla basılmıştır.

Yine isterseniz hataları gruplarında da hata mesajlarını alabilirsiniz.
except (ValueError, ZeroDivisionError) as hataMesaj: Bu şekilde her iki hatada da hata mesajı hataMesajı değişkenine aktarılacaktır.

Python try-except-else Kullanımı

Bu yöntem hataları farklı try-except-else yapısına bölebilirsiniz. Tabi bu kullanım kodların parçalanmasıa sebeb olacağıdan sistemin yönetimini zorlaştıracaktır. Bunu örnek ile açıklayalım.

mesajı ekrana basılacaktır. Else blogunda ise girilen sayıyı bölme işlemi yapılmaktadır. Burada bir sayı sıfıra bölünmeye çalışılırsa print("Sıfıra bölme hatası") mesajını ekrana basacaktır. [/crayon]

Python try-except-finally Kullanımı

Finally yapısına diğer yazılım dillerinden de aşına olabilirsiniz. Çünkü bir çoğunda kullanılmaktadır. Hata ayıklama yapısında finally, hata olsun veya olmasın çalışır. Finally yapısını şahsen ben veritabanı bağlantısı açıldıktan sonra işlemin tamamlanması durumunda veya tamamlanamaması durumunda finally kısmında kapatmaktayım. Bunu aşağıdaki örenekle daha da iyi kavrayalım.

Yukarıdaki örnekte program normal bir şekilde çalıştı ve finally bloğundaki mesajı ekrana bastı. Bu durum programda bir hata oluşması halindede çalışacaktır.

Python raise() Kullanımı

Hata ayıklama yapısında tanımlı hataları yönetebildiğimiz gibi kendimizde bir hata tanımlayabiliriz. Bunu aşağıdaki örnek ile daha iyi kavrayalım.

Yukarıda 18 yaş altına ve 65 yaş üstüne ve aynı zamanda 0 ve altı bir değer girildiğinda sistem hatası tanımlamış bulunduk.

Raise ile hataları belirli gruplara dahil edebilir ve o gruplarda bu hataları basabilirsiniz. Aşağıdaki örnekle bunu pekiştirelim.

Yukarıda bizim tanımlamış olduğumuz hatalar varsayılan Exception sınıfına dahil edildi ve mesajı except Exception as hata değikenine aktararak hata kontrolünü yapmış olduk.

İstersenin bu hataları ValueError hatasınıfınada tanımlayabiliriz. Aşağıdaki öreneğimizle daha iyi kavraylım.

Anlaşıldığı gibi hatalarımızı raise ValueError("") ValueError sınıfımıza dahil ettik.

Python Assert Kullanımı

Assert ile AssertionError sınıfını tanımlayabiliriz. Aynı zamanda daha hızlı teksatırda hata mesajları oluşturabilir.

Farklı bir kullanımı aşağıda verilmiştir.

Evet hata ayıklamaları konusunda anlatacaklarım bu kadar. Faydalı olaması dileğiyle. BAŞARILAR.