İstisnalar Sınıf Olabilir
Önceki Sınıflar Sonraki
İstisnalar Sınıf Olabilir
Kullanıcı tanımlı istisnalar artık dizge olmakla sınırlı değiller; sınıf da olabilirler. Bu mekanizmayı kullanarak genişletilebilir istisna hiyerarşileri yaratılabilir.
raise deyimi için iki yeni biçem mevcut:
raise Sinif, gercekleme

raise gercekleme
İlk biçemde gercekleme Sinifa ait bir gerçekleme olmalıdır. İkinci biçem ise şunun kısaltmasıdır:
raise gercekleme.__class__, gercekleme
Bir except bloğu hem sınıflar hem de dizgeleri içerebilir. Bir except bloğu içindeki sınıf eğer aynı sınıf veya bir temel sınıf ise istisna ile uyumludur. Türetilmiş sınıf içeren bir except bloğu temel sınıf ile uyumlu değildir. Örneğin aşağıdaki program B, C, D çıktısını o sırayla verir:
class B:
    pass
class C(B):
    pass
class D(C):
    pass
for c in [B, C, D]:
    try:
        raise c()
    except D:
        print "D"
    except C:
        print "C"
    except B:
        print "B"
Eğer except blokları ters sırayla yazılmış olsalardı (except B başta olacak şekilde) çıktı B, B, B olacaktı; çünkü uyan ilk except B bloğu tetiklenecekti.
Ele alınmamış sınıf istisnası için bir ileti yazılacağı zaman, önce sınıf adı yazılır, ardından iki nokta üst üste ve bir boşluk ve son olarak da gerçeklemenin yerleşik str() işlevinden geri döndürülen dizgenin karşılığı yazılır.
Önceki Üst Ana Başlık Sonraki
Sona Kalanlar Başlangıç Ya bundan sonra?
Bir Linux Kitaplığı Sayfası