Python Hataları ve Yerleşik İstisnalar

Bu eğitimde, Python'da yerleşik olan farklı hata türleri ve istisnalar hakkında bilgi edineceksiniz. Python yorumlayıcısı hatalarla karşılaştığında yükseltilirler.

Video: Python Özel Durum İşleme

Çalıştırmaya çalıştığımızda hatalara yol açan bir programı yazarken bazı hatalar yapabiliriz. Bir python programı, işlenmeyen bir hatayla karşılaştığında hemen 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özdizimi) uyulmamasından kaynaklanan hataya sözdizimi hatası veya ayrıştırma hatası denir .

Bir örneğe bakalım:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Örnekte gösterildiği gibi, bir ok, ayrıştırıcının sözdizimi hatasıyla karşılaştığı yeri belirtir.

Burada ifadede bir kolon :eksik olduğunu fark edebiliriz if.

Python Mantıksal Hataları (İstisnalar)

Çalışma zamanında oluşan hatalar (sözdizimi testini geçtikten sonra), istisnalar veya mantıksal hatalar olarak adlandırılır .

Örneğin, var olmayan bir dosyayı (okumak için) FileNotFoundErroraçmaya çalıştığımızda ( ), bir sayıyı sıfıra bölmeye ( ZeroDivisionError) veya var olmayan bir modülü içe aktarmaya çalıştığımızda ( ) ortaya çıkarlar ImportError.

Bu tür çalışma zamanı hataları meydana geldiğinde, Python bir istisna nesnesi oluşturur. Düzgün bir şekilde ele alınmazsa, bu hatanın neden oluştuğuyla ilgili bazı ayrıntılarla birlikte bu hataya bir geri bildirim yazdırır.

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

 >>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'

Python Yerleşik İstisnaları

Yasadışı işlemler istisnalara neden olabilir. Python'da, karşılık gelen hatalar meydana geldiğinde ortaya çıkan birçok yerleşik istisna vardır. Yerleşik local()işlevi kullanarak tüm yerleşik istisnaları aşağıdaki gibi görüntüleyebiliriz:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')yerleşik istisnalar, işlevler ve özniteliklerden oluşan bir modül döndürür. dirbu nitelikleri dizeler olarak listelememize izin verir.

Python programlamadaki yaygın yerleşik istisnaların bazıları ve bunlara neden olan hatalar aşağıda listelenmiştir:

İstisna Hatanın Nedeni
AssertionError Bir assertifade başarısız olduğunda oluşturulur.
AttributeError Öznitelik ataması veya referans başarısız olduğunda yükseltilir.
EOFError input()İşlev dosya sonu durumuna ulaştığında yükseltilir .
FloatingPointError Bir kayan nokta işlemi başarısız olduğunda yükseltilir.
GeneratorExit Bir jeneratörün close()yöntemi çağrıldığında yükseltin .
ImportError İçe aktarılan modül bulunamadığında yükseltilir.
IndexError Bir dizinin dizini aralık dışında olduğunda yükseltilir.
KeyError Sözlükte bir anahtar bulunamadığında yükseltilir.
KeyboardInterrupt Kullanıcı kesme tuşuna ( Ctrl+Cveya Delete) bastığında yükseltilir .
MemoryError Bir işlemin belleği yetersiz kaldığında yükseltilir.
NameError Yerel veya genel kapsamda bir değişken bulunmadığında yükseltilir.
NotImplementedError Soyut yöntemlerle oluşturulmuştur.
OSError Sistem çalışması sistemle ilgili hataya neden olduğunda yükselir.
OverflowError Bir aritmetik işlemin sonucu gösterilemeyecek kadar büyük olduğunda yükseltilir.
ReferenceError Çöp toplanan bir referansa erişmek için zayıf bir referans proxy kullanıldığında yükseltilir.
RuntimeError Bir hata başka bir kategoriye girmediğinde ortaya çıkar.
StopIteration next()Yineleyici tarafından döndürülecek başka öğe olmadığını belirtmek için işlev tarafından yükseltilmiştir .
SyntaxError Sözdizimi hatasıyla karşılaşıldığında ayrıştırıcı tarafından oluşturulur.
IndentationError Yanlış girinti olduğunda yükseltilir.
TabError Girinti tutarsız sekmelerden ve boşluklardan oluştuğunda yükseltilir.
SystemError Tercüman dahili bir hata tespit ettiğinde yükseltilir.
SystemExit İşleve göre yükseltildi sys.exit().
TypeError Yanlış türde bir nesneye bir işlev veya işlem uygulandığında yükseltilir.
UnboundLocalError Bir işlev veya yöntemdeki yerel bir değişkene referans yapıldığında, ancak bu değişkene hiçbir değer bağlı olmadığında yükseltilir.
UnicodeError Unicode ile ilgili bir kodlama veya kod çözme hatası oluştuğunda oluşturulur.
UnicodeEncodeError Kodlama sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar.
UnicodeDecodeError Kod çö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.
ValueError Bir işlev doğru türde ancak uygun olmayan değerde bir bağımsız değişken aldığında ortaya çıkar.
ZeroDivisionError Bölme veya modulo işleminin ikinci işleneni sıfır olduğunda yükseltilir.

Gerekirse, Python'da kendi istisnalarımızı da tanımlayabiliriz. Bunlar hakkında daha fazla bilgi edinmek için Python Kullanıcı Tanımlı İstisnalar sayfasını ziyaret edin.

Python'daki bu yerleşik ve kullanıcı tanımlı istisnaları try, exceptve finallyifadelerini kullanarak halledebiliriz . Onlar hakkında daha fazla bilgi edinmek için, Python try ve son olarak ifadeleri ziyaret edin.

Ilginç makaleler...