CodeBlanks Logo Icon CodeBlanks

Özet - İleri istisnalar

Ç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

main.py
# İç içe try yaz
# İçte ValueError'ı RuntimeError'a çevir
# Dışta tür ve kaynak türünü yazdır

Örnek çözüm

main.py
# İç 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

Soru
raise RuntimeError("Hata") ____ e
Cevap
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

Orta seviye bölümündeki tüm dersler