Programlar yeni bir istisna sınıfı yaratarak kendi istisnalarını isimlendirebilirler. İstisnalar genellikle, doğrudan veya dolaylı olarak, Exception sınıfından turetilirler. Ornek: >>> class bizimHata(Exception): ... def __init__(self, deger): ... self.deger = deger ... def __str__(self): ... return `self.deger` ... >>> try: ... raise bizimHata(2*2) ... except bizimHata, e: ... print 'İstisnamız oluştu, deger:', e.deger ... İstisnamız oluştu, deger: 4 >>> raise bizimHata, 'aaah!' Traceback (most recent call last): File "", line 1, in ? __main__.bizimHata: 'aaah!' İstisna sınıfları diğer sınıfların yapabildiği her şeyi yapabilecek şekilde tanımlanabilirler, fakat genellikle basit tutulurlar ve sıklıkla sadece istisnayı işleyenlerin hata hakkında bilgi almasını sağlayacak birkac ozellik sunarlar. Birkac farklı istisna oluşturabilen bir modul yaratırken, yaygın bir uygulama da bu modul tarafından tanımlanan istisnalar icin bir temel sınıf yaratıp ve farklı hata durumları icin bundan başka istisna sınıfları turetmektir: class Error(Exception): """Bu moduldeki istisnalar icin temel sınıf.""" pass class GirisHatasi(Error): """Giriş hataları icin oluşacak istisna. Ozellikler: ifade -- hatanın oluştuğu giriş ifadesi mesaj -- explanation of the error """ def __init__(self, ifade, mesaj): self.ifade = ifade self.mesaj = mesaj class GecisHatasi(Error): """İzin verilmeyen bir durum gecişine teşebbus edildiğinde oluşacak istisna. Ozellikler: onceki -- geciş başlangıcındaki durum sonraki -- istenen yeni durum mesaj -- durum gecişine izin verilmemesinin sebebi """ def __init__(self, onceki, sonraki, mesaj): self.onceki = onceki self.sonraki = sonraki self.mesaj = mesaj Coğu standart modul kendi tanımladıkları işlevlerde meydana gelen hataları rapor etmek icin kendi istisnalarını tanımlarlar. Sınıflar uzerine daha fazla bilgi sonraki bolumunde sunulacaktır. __________________