Özet - İleri istisnalar
- Python kursu
- Orta seviye
- Ders 87/116
- 5 dk
Çoklu except, chaining ve traceback'i birleştirerek bir hata raporlayıcı yazarsın.
Özet - İleri istisnalar
Bu grupta ileri düzey istisna işleme tekniklerini öğrendin. Çoklu except blokları farklı türleri yakalar; except (A, B): demet biçimi tek blokta birden çok türü eşler. as e ile hata nesnesini değişkene bağlarsın.
raise X from e ile zincirleme kurar, __cause__ özelliğiyle orijinal hataya erişirsin. traceback.format_exc() ise tüm yığın izini dize olarak verir. Bu araçlar, üretim uygulamalarında hata yönetimini güçlü kılar.
Mini görev: yakala ve zincirle
Özet görevinde bir hatayı yakalayıp başka bir hataya çevireceksin. İçteki try ValueError fırlatır; except ValueError as e: bloğu raise RuntimeError("dönüştürme") from e yapar. Dıştaki except RuntimeError as e: bloğu türü ve kaynağı yazdırır.
Bu görev zincirleme, as e ve tür bilgisi almayı bir arada gösterir. Çıktı iki satırdır: önce yeni hata türü, sonra kaynak türü.
Uygulama Zincirle ve türleri yazdır
İç içe try yaz. İçteki blokta value = int("abc"); except ValueError as e: bloğunda raise RuntimeError("dönüştürme") from e. Dıştaki except RuntimeError as e: bloğunda print(type(e).__name__) ve print(type(e.__cause__).__name__).
Başlangıç kodu
# İç içe try yaz
# İçte ValueError'ı RuntimeError'a çevir
# Dışta tür ve kaynak türünü yazdırÖrnek çözüm
# İç içe try yaz
try:
# İçte ValueError'ı RuntimeError'a çevir
try:
value = int("abc")
except ValueError as e:
raise RuntimeError("dönüştürme") from e
# Dışta tür ve kaynak türünü yazdır
except RuntimeError as e:
print(type(e).__name__)
print(type(e.__cause__).__name__)Beklenen çıktı
RuntimeError ValueError
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Hata nesnesine erişmek için hangi sözcük kullanılır?
- as Doğru cevap
- is
- to
- be
Açıklama: as e ile hata nesnesini e değişkenine bağlarsın.
2 raise from e tamamla
raise RuntimeError("Hata") ____ e
raise RuntimeError("Hata") from e
Açıklama: from e bağı orijinal hatayı zincirler.
3 İleri istisna kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
except (A, B) |
Demet ile çoklu tür |
as e |
Nesneyi e'ye bağlar |
from e |
Zincirleme bağı |
format_exc |
Yığın izini dize verir |