CodeBlanks Logo Icon CodeBlanks

Exception hiyerarşisi

ValueError, TypeError, KeyError gibi istisnaları öğrenirsin.

Exception hiyerarşisi

Python'da tüm hatalar bir ağaç oluşturur. Kök BaseException'dır; Exception onun alt sınıfıdır. ValueError, TypeError, KeyError gibi yaygın hatalar Exception'ın alt sınıflarıdır:

BaseException
├── Exception
│   ├── ValueError
│   ├── TypeError
│   └── KeyError
└── KeyboardInterrupt

except Exception tüm program hatalarını yakalar ama KeyboardInterrupt gibi sistem hatalarını yakalamaz. Bu, çıplak except:'ten daha güvenlidir.

Hiyerarşiyi bilmek, doğru except bloğu yazmayı sağlar.

Çoklu except blokları

Tek bir try bloğundan sonra birden çok except yazılabilir. Python yukarıdan aşağı okur ve ilk eşleşeni çalıştırır:

try:
    value = int("abc")
except ValueError:
    print("değer hatası")
except TypeError:
    print("tür hatası")
except Exception as e:
    print(f"diğer: {e}")

as e ile hata nesnesini bir değişkene bağlarsın ve mesajına erişirsin. En genel olanı (Exception) her zaman en sona yaz.

Bu, farklı hata türlerine farklı tepki vermeyi sağlar.

Uygulama Çoklu except ile değer hatası yakala

try bloğu içinde value = int("abc") yaz. except ValueError: bloğu içinde print("değer hatası") yaz. except Exception as e: bloğu içinde print(f"diğer: {e}") yaz.

Başlangıç kodu

main.py
# try bloğu aç
# ValueError ve Exception'ı ayrı except ile yakala

Örnek çözüm

main.py
try:
    value = int("abc")
except ValueError:
    print("değer hatası")
except Exception as e:
    print(f"diğer: {e}")

Beklenen çıktı

değer hatası

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangisi Exception'ın alt sınıfı DEĞİLDİR?

  • KeyboardInterrupt Doğru cevap
  • TypeError
  • KeyError
  • ValueError

Açıklama: KeyboardInterrupt BaseException'ın doğrudan alt sınıfıdır, Exception'ın değil.

2 Hiyerarşi eşleştir

Kavram Anlamı
BaseException Kök sınıf
Exception Program hataları
ValueError Alt sınıf
as e Hata nesnesini bağlar

3 except as e kalıbını tamamla

Soru
try:
    value = int("abc")
____ as e:
    print(f"hata: {e}")
Cevap
try:
    value = int("abc")
except Exception as e:
    print(f"hata: {e}")

Açıklama: except Exception as e tüm program hatalarını yakalar ve e'ye bağlar.

Başlangıç bölümündeki tüm dersler