İçeriğe geç

Hatalar ve Dosyalar

Program çalışırken bir hata olursa durmak zorunda değil: dene / hata_yakala ile hatayı yakalayıp ne yapılacağına sen karar verirsin. Bu sayfada ayrıca dosyalara yazmayı ve dosyadan okumayı öğrenirsin.

TürKod Python
dene try
hata_yakala except
değilse else
sonunda finally
hata_fırlat raise
olarak as
iddia_et assert
fonksiyon bol(a, b):
dene:
sonuc = a / b
hata_yakala SıfıraBölmeHatası:
yazdır("Sıfıra bölünemez!")
değilse:
yazdır("Sonuç:", sonuc)
sonunda:
yazdır("işlem bitti")
bol(10, 2)
bol(1, 0)

Çıktı:

Sonuç: 5.0
işlem bitti
Sıfıra bölünemez!
işlem bitti
  • değilse bloğu yalnızca hata olmazsa çalışır.
  • sonunda bloğu her durumda çalışır.
  • Birden çok hatayı birlikte yakalamak için: hata_yakala (DizinHatası, AnahtarHatası):
dene:
yas = tamsayı("on iki")
hata_yakala DeğerHatası:
yazdır("Lütfen rakamla yaz.")

Çıktı: Lütfen rakamla yaz.

fonksiyon yas_kontrol(yas):
eğer yas < 0:
hata_fırlat DeğerHatası("Yaş negatif olamaz")
döndür yas
dene:
yas_kontrol(-5)
hata_yakala DeğerHatası olarak hata:
yazdır(hata)

Çıktı: Yaş negatif olamaz

TürKod Python Ne zaman?
İstisna Exception her türlü hata
DeğerHatası ValueError yanlış değer (tamsayı("abc"))
TürHatası TypeError yanlış tür ("a" + 5)
DizinHatası IndexError listede olmayan sıra
AnahtarHatası KeyError sözlükte olmayan anahtar
İsimHatası NameError tanımsız değişken
SıfıraBölmeHatası ZeroDivisionError sıfıra bölme
DosyaBulunamadıHatası FileNotFoundError olmayan dosya
ÖzellikHatası AttributeError olmayan özellik/metot

ile ... olarak dosyayı açar ve iş bitince kendiliğinden kapatır.

TürKod Python
ile with
açık open
kodlama encoding
yaz write
oku read
satırları_oku readlines
ile açık("notlar.txt", "w", kodlama="utf-8") olarak dosya:
dosya.yaz("Merhaba\n")
dosya.yaz("Dünya\n")
ile açık("notlar.txt", "r", kodlama="utf-8") olarak dosya:
için satir içinde dosya:
yazdır(satir.kırp())

Çıktı:

Merhaba
Dünya

Dosya kipleri: "r" oku, "w" sıfırdan yaz, "a" sonuna ekle.

Kullanıcıdan bir sayı al; sayı değilse DeğerHatası yakalayıp “Geçersiz sayı” yazdır.