Python Hata Yakalama ve Yerleşik İstisnalar

Bu öğreticide, Python’da yerleşik olarak bulunan farklı türdeki hatalar ve istisnalar hakkında bilgi edineceksiniz. Python yorumlayıcısı hatalarla karşılaştığında ortaya çıkarlar.

Python İstisna İşleme

Bir programı yazarken çalıştırmaya çalıştığımızda hatalara yol açan bazı kodlamalar yapabiliriz. Bir python programı, işlenmeyen bir hatayla karşılaştığı anda sona erer. Bu hatalar genel olarak iki sınıfa ayrılabilir:

  1. Sözdizimi hataları
  2. Mantıksal hatalar (İstisnalar)

Python Sözdizimi Hataları

Dilin doğru yapısına (sözdizimine) uyulmamasından kaynaklanan hataya sözdizimi hatası veya ayrıştırma hatası denir.

Bir örneğe bakalım:

Örnekte gösterildiği gibi bir ok sözdizimi hatasının nerede olduğunu gösterir.

Bu ifadede if yapısı için gerekli olan üst üste iki noktanın (:) eksik olduğunu görüyoruz.


Python Mantıksal Hataları (İstisnalar)

Sözdizimi testini geçtikten sonra oluşan hatalara istisnalar veya mantıksal hatalar denir.

Örneğin var olmayan bir dosyayı açmaya çalışmak, bir sayıyı sıfıra bölmeye çalışmak veya var olmayan bir modülü içe aktarmaya çalışmak bu hatalara sebep olur.

Bu tür hatalar meydana geldiğinde, Python bir istisna nesnesi oluşturur. Bu hatanın neden oluştuğuna ilişkin bazı ayrıntılarla birlikte bu hataya ilişkin bir geri izleme yazdırır.

Python’un bu hataları nasıl ele aldığına bakalım:


Python Yerleşik İstisnalar

Hatalı işlemler istisnalar doğurabilir. Python’da ilgili hatalar oluştuğunda ortaya çıkan birçok yerleşik istisna vardır. Yerleşik işlevi kullanarak tüm yerleşik istisnaları aşağıdaki gibi görebiliriz:

locals()[‘__builtins__’] yerleşik istisnalar, işlevler ve niteliklerden oluşan bir modül döndürür. dir bu öznitelikleri diziler olarak listelememize izin verir.

Python programlamada yaygın yerleşik istisnalardan bazıları ve bunlara neden olan hata aşağıda listelenmiştir:

İstisnaHata Nedeni
AssertionErrorBir assert işlemi başarısız olduğunda ortaya çıkar.
AttributeErrorNitelik ataması veya referansı başarısız olduğunda ortaya çıkar.
EOFErrorraw_input() veya input() fonksiyonundan girdi olmadığında ve dosyanın sonuna ulaşıldığında ortaya çıkar.
FloatingPointErrorFloat hesaplama başarısız olduğunda oluşur.
StandardErrorStopIteration ve SystemExit dışındaki tüm yerleşik istisnalar için temel sınıftır.
ImportErrorİçe aktarılan modül bulunamadığında ortaya çıkar.
IndexErrorBir sıralı yapıda (list veya tüple gibi) indeks bulunmadığı zaman ortaya çıkar.
KeyErrorSözlükte bir anahtar bulunmadığında ortaya çıkar.
KeyboardInterruptKullanıcı program yürütmeyi kestiğinde (genellikle Ctrl + C tuşlarına basıldığında) ortaya çıkar.
MemoryErrorHafıza ile ilgili problemlerde ortaya çıkar.
NameErrorYerel veya global kapsamda bir değişken bulunmadığında ortaya çıkar.
NotImplementedErrorKalıtımlı bir sınıfta uygulanması gereken soyut (abstract) bir yöntem gerçekte uygulanmadığında ortaya çıkar.
OSErrorSistem ilgili hata olduğunda ortaya çıkar.
OverflowErrorBir hesaplama, sayısal bir tür için maksimum sınırı aştığında oluşur.
ReferenceErrorAtanmamış bir değişken kullanıldığında ortaya çıkar.
RuntimeErrorOluşturulan bir hata herhangi bir kategoriye girmediğinde oluşur.
StopIterationBir iterasyonun next() metodu bir nesneyi göstermediğinde oluşur.
SyntaxErrorSözdizimi hatasıyla karşılaşıldığında ortaya çıkar.
IndentationErrorYanlış girinti olduğunda ortaya çıkar.
TabErrorGirinti tutarsız sekmeler ve boşluklardan oluştuğunda ortaya çıkar.
SystemErrorYorumlayıcı dahili hata algıladığında tetiklenir.
SystemExitsys.exit() fonksiyonu tarafından oluşur.
TypeErrorYanlış türde bir nesneye bir işlev veya işlem uygulandığında ortaya çıkar.
UnboundLocalErrorBir fonksiyon veya metotta yerel bir değişkene erişmeye çalışırken ortaya çıkar, ancak bu değişkene değer atanmamıştır.
UnicodeErrorUnicode ile ilgili bir kodlama veya kod çözme hatası oluştuğunda ortaya çıkar.
UnicodeEncodeErrorKodlama sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar.
UnicodeDecodeErrorKod çözme sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar.
UnicodeTranslateErrorÇeviri sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar.
ValueErrorBir işlev, doğru türde ancak uygun olmayan değerde bir argüman aldığında ortaya çıkar.
ZeroDivisionErrorSıfıra bölme veya mod alma işleminde ortaya çıkar.

Gerekirse Python’da kendi istisnalarımızı da tanımlayabiliriz. Python’da bu yerleşik ve kullanıcı tanımlı istisnaları ve deyimlerini try kullanarak işleyebiliriz. 

Bir cevap yazın

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