# Gömülü İstisnalar

Python’da tüm istisnalar(exceptions) `BaseException` sınıfından türeyen bir sınıfın örnekleri olmalıdır. Belirli bir sınıftan bahseden `except` cümlesine sahip bir `try` deyiminde, bu cümle aynı zamanda o sınıftan türetilen istisna sınıflarını da ele alır (ancak onun türetildiği istisna sınıflarını değil). Alt sınıflandırma yoluyla ilişkili olmayan iki istisna sınıfı, aynı ada sahip olsalar bile asla eşdeğer değildir.

The built-in exceptions listed in this chapter can be generated by the interpreter or built-in functions. Except where mentioned, they have an “associated value” indicating the detailed cause of the error. This may be a string or a tuple of several items of information (e.g., an error code and a string explaining the code). The associated value is usually passed as arguments to the exception class’s constructor.

Kullanıcı kodu gömülü istisnaları oluşturabilir. Bu, bir istisna işleyicileri test etmek veya yorumlayıcının aynı istisnayı ortaya çıkardığı duruma “benzer” bir hata durumunu bildirmek için kullanılabilir; ancak kullanıcı kodunun uygun olmayan bir hata oluşturmasını engelleyecek hiçbir şey olmadığına dikkat edin.

Gömülü istisna sınıfları yeni istisnalar tanımlamak için alt sınıflara ayrılabilir; programcıların yeni istisnaları `BaseException` sınıfından değil, `Exception` sınıfından veya onun alt sınıflarından birinden türetmeleri önerilir. İstisnaların tanımlanmasıyla ilgili daha fazla bilgi Python Öğreticisi’nde Kullanıcı Tanımlı İstisnalar başlığı altında mevcuttur.

## İstisna bağlamı

İstisna nesnelerindeki üç öznitelik, istisnanın ortaya çıktığı bağlam hakkında bilgi sağlar:

BaseException.__context__
BaseException.__cause__
BaseException.__suppress_context__

  Başka bir istisna zaten işlenirken yeni bir istisna yükseltirken, yeni istisnanın `__context__` niteliği otomatik olarak işlenen istisnaya ayarlanır. Bir `except` veya `finally` cümlesi veya bir `with` deyimi kullanıldığında bir istisna ele alınabilir.

  Bu örtük istisna bağlamı(implicit exception context), `from` ile `raise`: kullanılarak açık bir neden ile desteklenebilir:

      raise new_exc from original_exc

  Bu `from` ifadesini takip eden ifade bir istisna veya `None` olmalıdır. Ortaya çıkan istisna üzerinde `__cause__` olarak ayarlanacaktır. `__cause__` ayarı aynı zamanda `__suppress_context__` niteliğini de örtük(implicit) olarak `True` olarak ayarlar, böylece `raise new_exc from None` kullanımı görüntüleme amacıyla eski istisnayı yenisiyle değiştirirken (örneğin `KeyError` ifadesini `AttributeError` ifadesine dönüştürmek), hata ayıklama sırasında iç gözlem için eski istisnayı `__context__` içinde kullanılabilir bırakır.

  Varsayılan geri izleme görüntüleme kodu(default traceback display code), istisnanın geri izlemesine ek olarak bu zincirleme istisnaları da gösterir. `__cause__` içinde açıkça zincirlenmiş bir istisna mevcut olduğunda her zaman gösterilir. `__context__` içindeki dolaylı zincirleme istisna yalnızca `__cause__` `None` ve `__suppress_context__` false ise gösterilir.

  Her iki durumda da, istisnanın kendisi her zaman zincirleme istisnalardan sonra gösterilir, böylece geri izlemenin(traceback) son satırı her zaman oluşturulan son istisnayı gösterir.

## Gömülü istisnalardan miras alma

Kullanıcı kodu, bir istisna türünden miras alan alt sınıflar oluşturabilir. Tabanların `args` niteliğini işleme biçimleri arasındaki olası çakışmaların yanı sıra olası bellek düzeni uyumsuzluklarından kaçınmak için bir seferde yalnızca bir istisna türünün alt sınıfının oluşturulması önerilir.

Çoğu gömülü istisna, verimlilik için C dilinde uygulanmıştır, bkz: Objects/exceptions.c. Bazılarının özel bellek düzenleri vardır, bu da birden fazla istisna türünden miras alan bir alt sınıf oluşturmayı imkansız kılar. Bir türün bellek düzeni bir uygulama detayıdır ve Python sürümleri arasında değişebilir, bu da gelecekte yeni çakışmalara yol açabilir. Bu nedenle, birden fazla istisna türünün alt sınıfını oluşturmaktan tamamen kaçınmanız önerilir.

## Temel sınıflar

Aşağıdaki istisnalar çoğunlukla diğer istisnalar için temel sınıflar olarak kullanılır.

exception BaseException

  Tüm gömülü istisnalar için temel sınıf. Kullanıcı tanımlı sınıflar tarafından doğrudan miras alınması amaçlanmamıştır (bunun için `Exception` kullanın). Bu sınıfın bir örneği üzerinde `str()` çağrılırsa, örneğin argüman(lar)ının gösterimi veya argüman yoksa boş dize döndürülür.

  args

    İstisna kurucusuna verilen argümanlar demeti. Bazı gömülü istisnalar (`OSError` gibi) belirli sayıda argüman bekler ve bu ikilinin elemanlarına özel bir anlam atarken, diğerleri genellikle yalnızca bir hata mesajı veren tek bir dizeyle çağrılır.

  with_traceback(tb)

    Bu yöntem tb öğesini istisna için yeni geri izleme olarak ayarlar ve istisna nesnesini döndürür. Daha çok PEP 3134 istisna zincirleme özellikleri kullanıma sunulmadan önce kullanılıyordu. Aşağıdaki örnek, bir `SomeException` örneğini geri izlemeyi koruyarak nasıl bir `OtherException` örneğine dönüştürebileceğimizi göstermektedir. Bir kez oluşturulduğunda, geçerli kare, orijinal `SomeException` ın geri izlemesinde olduğu gibi, `OtherException` ın geri izlemesine itilir, eğer arayan kişiye yayılmasına izin verseydik:

        try:
            ...
        except SomeException:
            tb = sys.exception().__traceback__
            raise OtherException(...).with_traceback(tb)

  __traceback__

    Bu istisna ile ilişkili traceback nesnesini tutan yazılabilir bir alan. Ayrıca bakınız: The raise statement.

  add_note(note)

    İstisna dizesinden sonra standart geri dönüşte görünen istisna notlarına `note` dizesini ekleyin. Eğer `note` bir string değilse bir `TypeError` oluşur.

    Added in version 3.11.

  __notes__

    Bu istisnanın `add_note()` ile eklenen notlarının bir listesi. Bu nitelik `add_note()` çağrıldığında oluşturulur.

    Added in version 3.11.

exception Exception

  Tüm gömülü, sistemden çıkmayan istisnalar(non-system-exiting exceptions) bu sınıftan türetilir. Kullanıcı tanımlı tüm istisnalar da bu sınıftan türetilmelidir.

exception ArithmeticError

  Çeşitli aritmetik hatalar için oluşturulan gömülü istisnalar için temel sınıf: `OverflowError`, `ZeroDivisionError`, `FloatingPointError`.

exception BufferError

  Bu buffer ile ilgili bir işlem gerçekleştirilemediğinde oluşturulur.

exception LookupError

  Bir eşleme veya dizide kullanılan bir anahtar veya dizin geçersiz olduğunda ortaya çıkan istisnalar için temel sınıf: `IndexError`, `KeyError`. Bu doğrudan `codecs.lookup()` tarafından oluşturulabilir.

## Somut istisnalar (Concrete exceptions)

Aşağıdaki istisnalar genellikle ortaya çıkan istisnalardır.

exception AssertionError

  Bir `assert` ifadesi başarısız(fail) olduğunda ortaya çıkar.

exception AttributeError

  Bir öznitelik referansı (bkz. Attribute references) veya ataması başarısız olduğunda ortaya çıkar. (Bir nesne öznitelik referanslarını veya öznitelik atamalarını hiç desteklemiyorsa, `TypeError` yükseltilir)

  `name` ve `obj` öznitelikleri, kurucuya(constructor) yalnızca anahtar kelime argümanları kullanılarak ayarlanabilir. Ayarlandıklarında, sırasıyla erişilmeye çalışılan özniteliğin adını ve söz konusu öznitelik için erişilen nesneyi temsil ederler.

  3.10 sürümünde değişti: `name` ve `obj` nitelikleri eklendi.

exception EOFError

  `input()` fonksiyonu herhangi bir veri okumadan dosya sonu koşuluna (end-of-file EOF) ulaştığında ortaya çıkar. (Not: `io.IOBase.read()` ve `io.IOBase.readline()` yöntemleri EOF’ye ulaştıklarında boş bir dize döndürürler)

exception FloatingPointError

  Şu anda kullanılmıyor.

exception GeneratorExit

  Bir generator veya coroutine kapatıldığında ortaya çıkar; bkz `generator.close()` ve `coroutine.close()`. Teknik olarak bir hata olmadığı için `Exception` yerine doğrudan `BaseException` dan miras alınır.

exception ImportError

  Bir `import` deyimi bir modülü yüklemeye çalışırken sorun yaşadığında ortaya çıkar. Ayrıca `from ... import` içindeki “from list” bulunamayan bir isme sahip olduğunda da oluşur.

  İsteğe bağlı name ve path anahtar sözcük, bağımsız değişkenleri ilgili öznitelikleri ayarlar:

  name

    İçe aktarılmaya çalışılan modülün adı.

  path

    İstisnayı tetikleyen herhangi bir dosyanın yolu.

  3.3 sürümünde değişti: `name` ve `path` nitelikleri eklendi.

exception ModuleNotFoundError

  Bir modül bulunamadığında `import` tarafından ortaya çıkarılan `ImportError` alt sınıfı. Ayrıca `sys.modules` içinde `None` bulunduğunda da ortaya çıkar.

  Added in version 3.6.

exception IndexError

  Bir dizi alt simgesi aralık dışında olduğunda yükseltilir. (Dilim indeksleri(slice indices) sessizce izin verilen aralığa düşecek şekilde kırpılır; bir indeks bir tamsayı değilse, `TypeError` oluşur.).

exception KeyError

  Bir eşleme(mapping) sözlük(dictionary) anahtarı mevcut anahtarlar kümesinde bulunamadığında ortaya çıkar.

exception KeyboardInterrupt

  Kullanıcı kesme(interrupt) tuşuna bastığında oluşur (normalde `Control`-`C` veya `Delete`). Yürütme sırasında düzenli olarak kesme kontrolü yapılır. İstisna, `Exception` kodunu yakalayan kod tarafından yanlışlıkla yakalanmamak ve böylece yorumlayıcının çıkmasını önlemek için `BaseException` kodundan miras alır.

  Not

  Bir `KeyboardInterrupt` yakalamak özel dikkat gerektirir. Tahmin edilemeyen noktalarda yükseltilebildiğinden, bazı durumlarda çalışan programı tutarsız bir durumda bırakabilir. Genellikle en iyisi `KeyboardInterrupt` ın programı mümkün olduğunca çabuk sonlandırmasına izin vermek veya tamamen yükseltilmesinden kaçınmaktır. (Bkz. Note on Signal Handlers and Exceptions.)

exception MemoryError

  Bir işlemin belleği tükendiğinde ancak durum hala kurtarılabildiğinde (bazı nesneleri silerek) yükseltilir. İlişkili değer, ne tür bir (dahili) işlemin belleğinin tükendiğini gösteren bir dizedir. Altta yatan bellek yönetim mimarisi (C’nin `malloc()` fonksiyonu) nedeniyle, yorumlayıcının bu durumdan her zaman tamamen kurtulamayabileceğini unutmayın; yine de bir istisna yükseltir, böylece kaçan bir programın neden olması durumunda bir yığın geri dönüşü yazdırılabilir.

exception NameError

  Yerel veya genel bir ad bulunamadığında oluşur. Bu yalnızca niteliksiz adlar için geçerlidir. İlişkili değer, bulunamayan adı içeren bir hata mesajıdır.

  `name` özniteliği, yapıcıya yalnızca bir anahtar sözcük argümanı kullanılarak ayarlanabilir. Ayarlandığında, erişilmeye çalışılan değişkenin adını temsil eder.

  3.10 sürümünde değişti: `name` niteliği eklendi.

exception NotImplementedError

  Bu istisna `RuntimeError`’dan türetilmiştir. Kullanıcı tanımlı temel sınıflarda, soyut yöntemler, türetilmiş sınıfların yöntemi geçersiz kılmasını gerektirdiğinde veya sınıf geliştirilirken gerçek uygulamanın hala eklenmesi gerektiğini belirtmek için bu istisnayı yükseltmelidir.

  Not

  Bu, bir operatörün veya yöntemin hiç desteklenmemesi gerektiğini belirtmek için kullanılmamalıdır - bu durumda, ya operatörü / yöntemi tanımlanmamış bırakın ya da bir alt sınıfsa `None`. olarak ayarlayın.

  Uyarı

  `NotImplementedError` and `NotImplemented` are not interchangeable. This exception should only be used as described above; see `NotImplemented` for details on correct usage of the built-in constant.

exception OSError([arg])
exception OSError(errno, strerror[, filename[, winerror[, filename2]]])

  Bu istisna, bir sistem işlevi “dosya bulunamadı” veya “disk dolu” gibi G/Ç hataları da dahil olmak üzere sistemle ilgili bir hata döndürdüğünde ortaya çıkar (illegal argüman bağımsız değişken türleri veya diğer tesadüfi hatalar için değil).

  Kurucunun(constructor) ikinci formu, aşağıda açıklanan ilgili nitelikleri ayarlar. Öznitelikler belirtilmezse varsayılan olarak `None` olur. Geriye dönük uyumluluk için, üç argüman geçilirse, `args` niteliği yalnızca ilk iki kurucu argümanının 2’li bir çiftini(tuple) içerir.

  Kurucu genellikle aşağıda OS istisnaları bölümünde açıklandığı gibi `OSError` alt sınıfını döndürür. Belirli alt sınıf son `errno` değerine bağlıdır. Bu davranış yalnızca `OSError` doğrudan veya bir takma ad aracılığıyla oluşturulurken ortaya çıkar ve alt sınıf oluşturulurken miras alınmaz.

  errno

    C değişkeni `errno` dan alınan sayısal bir hata kodu.

  winerror

    Windows altında, bu size yerel Windows hata kodunu verir. O halde `errno` niteliği bu yerel hata kodunun POSIX terimleriyle yaklaşık bir çevirisidir.

    Windows altında, winerror kurucu bağımsız değişkeni bir tamsayı ise, `errno` özniteliği Windows hata kodundan belirlenir ve errno bağımsız değişkeni yok sayılır. Diğer platformlarda, winerror argümanı yok sayılır ve `winerror` niteliği mevcut değildir.

  strerror

    İşletim sistemi tarafından sağlanan ilgili hata mesajı. POSIX altında `perror()` ve Windows altında `FormatMessage()` C işlevleri tarafından biçimlendirilir.

  filename
  filename2

    Bir dosya sistemi yolu içeren istisnalar için (örneğin `open()` veya `os.unlink()`), `filename` fonksiyona aktarılan dosya adıdır. İki dosya sistemi yolu içeren fonksiyonlar için (`os.rename()` gibi), `filename2` fonksiyona aktarılan ikinci dosya adına karşılık gelir.

  3.3 sürümünde değişti: `EnvironmentError`, `IOError`, `WindowsError`, `socket.error`, `select.error` ve `mmap.error`, `OSError` ile birleştirilmiştir ve kurucu bir alt sınıf döndürebilir.

  3.4 sürümünde değişti: `filename` özniteliği artık filesystem encoding and error handler ile kodlanan veya kodu çözülen ad yerine işleve aktarılan orijinal dosya adıdır. Ayrıca, filename2 kurucu argümanı ve niteliği eklenmiştir.

exception OverflowError

  Raised when the result of an arithmetic operation is too large to be represented. This cannot occur for integers (which would rather raise `MemoryError` than give up). However, for historical reasons, OverflowError is sometimes raised for integers that are outside a required range. Because of the lack of standardization of floating-point exception handling in C, most floating-point operations are not checked.

exception RecursionError

  Bu istisna `RuntimeError` öğesinden türetilmiştir. Yorumlayıcı maksimum özyineleme derinliğinin(recursion depth) (bkz. `sys.getrecursionlimit()`) aşıldığını tespit ettiğinde ortaya çıkar.

  Added in version 3.5: Önceden, düz bir `RuntimeError` oluşturulurdu.

exception ReferenceError

  Bu istisna, `weakref.proxy()` fonksiyonu tarafından oluşturulan bir zayıf referans proxy’si(weak reference proxy), çöp toplandıktan(garbage collect) sonra referansın bir niteliğine erişmek için kullanıldığında ortaya çıkar. Zayıf referanslar hakkında daha fazla bilgi için `weakref` modülüne bakın.

exception RuntimeError

  Diğer kategorilerden herhangi birine girmeyen bir hata tespit edildiğinde oluşturulur. İlişkili değer, tam olarak neyin yanlış gittiğini gösteren bir dizedir.

exception StopIteration

  Yerleşik işlev `next()` ve bir iterator ün `__next__()` yöntemi tarafından yineleyici tarafından üretilen başka öğe olmadığını bildirmek için yükseltilir.

  value

    İstisna nesnesinin tek bir `value` özelliği vardır; bu özellik istisna oluşturulurken argüman olarak verilir ve varsayılan olarak `None` değerini alır.

  Bir generator veya coroutine fonksiyonu döndüğünde, yeni bir `StopIteration` örneği oluşturulur ve fonksiyon tarafından döndürülen değer, istisnanın yapıcısı için `value` parametresi olarak kullanılır.

  Bir generator(işleyici) kodu doğrudan veya dolaylı olarak `StopIteration` değerini oluşturunca, `RuntimeError` değerine dönüştürülür (yeni istisnanın nedeni olarak `StopIteration` değeri korunur).

  3.3 sürümünde değişti: `value` niteliği ve generator işlevlerin bir değer döndürmek için bunu kullanabilmesi özelliği eklendi.

  3.5 sürümünde değişti: RuntimeError dönüşümü `from __future__ import generator_stop` aracılığıyla tanıtıldı, bkz PEP 479.

  3.7 sürümünde değişti: Varsayılan olarak tüm kodlar için PEP 479 özelliğini etkinleştirin: bir generator’da ortaya çıkan `StopIteration` hatası bir `RuntimeError` hatasına dönüştürülür.

exception StopAsyncIteration

  Yinelemeyi durdurmak için bir asynchronous iterator nesnesinin `__anext__()` yöntemi tarafından oluşturulmalıdır.

  Added in version 3.5.

exception SyntaxError(message, details)

  Ayrıştırıcı bir sözdizimi hatasıyla karşılaştığında ortaya çıkar. Bu, bir `import` deyiminde, yerleşik `compile()`, `exec()` veya `eval()` işlevlerine yapılan bir çağrıda veya ilk kod veya standart girdi okunurken (etkileşimli olarak da) meydana gelebilir.

  İstisna örneğinin `str()` öğesi yalnızca hata mesajını döndürür. Details, üyeleri ayrı nitelikler olarak da kullanılabilen bir tuple’dır.

  filename

    Sözdizimi hatasının oluştuğu dosyanın adı.

  lineno

    Hatanın dosyadaki hangi satır numarasında meydana geldiği. Bu 1 indekslidir: dosyadaki ilk satırın `lineno` değeri 1’dir.

  offset

    Hatanın meydana geldiği satırdaki sütun. Bu 1 indekslidir: satırdaki ilk karakter 1 `offset` değerine sahiptir.

  text

    Hataya dahil olan kaynak kod metni.

  end_lineno

    Hatanın meydana geldiği dosyadaki satır numarası. Bu, 1 indekslidir: Dosyanın ilk satırının lineno değeri 1’dir.

  end_offset

    Hatanın meydana geldiği son satırdaki sütun numarası. Bu, 1 indekslidir: Satırdaki ilk karakterin offset değeri 1’dir.

  f-string alanlarındaki hatalar için mesajın önüne “f-string: “ ile başlar ve ofsetler, değiştirme ifadesinden oluşturulan bir metindeki ofsetlerdir. Örneğin, f’Bad {a b} field’ derlendiğinde şu args özniteliği elde edilir: (‘f-string: …’, (‘’, 1, 2, ‘(a b)n’, 1, 5)).

  3.10 sürümünde değişti: `end_lineno` ve `end_offset` nitelikleri eklendi.

exception IndentationError

  Yanlış girintileme ile ilgili sözdizimi hataları için temel sınıf. Bu, `SyntaxError` alt sınıfıdır.

exception TabError

  Girintileme tutarsız sekme ve boşluk kullanımı içerdiğinde ortaya çıkar. Bu, `IndentationError` öğesinin bir alt sınıfıdır.

exception SystemError

  Raised when the interpreter finds an internal error, but the situation does not look so serious to cause it to abandon all hope. The associated value is a string indicating what went wrong (in low-level terms). In CPython, this could be raised by incorrectly using Python’s C API, such as returning a `NULL` value without an exception set.

  If you’re confident that this exception wasn’t your fault, or the fault of a package you’re using, you should report this to the author or maintainer of your Python interpreter. Be sure to report the version of the Python interpreter (`sys.version`; it is also printed at the start of an interactive Python session), the exact error message (the exception’s associated value) and if possible the source of the program that triggered the error.

exception SystemExit

  Bu istisna `sys.exit()` işlevi tarafından ortaya çıkartılır. Yanlışlıkla `Exception` kodunu yakalayan kod tarafından yakalanmaması için `Exception` yerine `BaseException` kodundan miras alır. Bu, istisnanın düzgün bir şekilde yayılmasını ve yorumlayıcının çıkmasına neden olmasını sağlar. İşlenmediğinde, Python yorumlayıcısı çıkar; herhangi bir yığın geri dönüşü yazdırılmaz. Kurucu, `sys.exit()` öğesine aktarılan isteğe bağlı argümanın aynısını kabul eder. Değer bir tamsayı ise, sistem çıkış durumunu belirtir (C’nin `exit()` fonksiyonuna aktarılır); `None` ise, çıkış durumu sıfırdır; başka bir türe sahipse (string gibi), nesnenin değeri yazdırılır ve çıkış durumu birdir.

  Bir `sys.exit()` çağrısı bir istisnaya çevrilir, böylece temizleme işleyicileri(clean-up handlers) (`try` deyimlerinin `finally` cümleleri) çalıştırılabilir ve böylece bir hata ayıklayıcı kontrolü kaybetme riski olmadan bir betiği çalıştırabilir. Hemen çıkmak kesinlikle gerekliyse `os._exit()` fonksiyonu kullanılabilir (örneğin, `os.fork()` çağrısından sonra alt süreçte).

  code

    Yapıcıya aktarılan çıkış durumu veya hata mesajı. (Varsayılan değer `None`.)

exception TypeError

  Bir işlem veya fonksiyon uygun olmayan türdeki bir nesneye uygulandığında oluşur. İlişkili değer, tür uyuşmazlığı hakkında ayrıntılar veren bir dizedir.

  Bu istisna, bir nesne üzerinde denenen bir işlemin desteklenmediğini ve desteklenmesinin amaçlanmadığını belirtmek için kullanıcı kodu tarafından oluşur. Bir nesnenin belirli bir işlemi desteklemesi gerekiyorsa ancak henüz bir uygulama sağlamamışsa, `NotImplementedError` oluşması gereken uygun istisnadır.

  Yanlış türde argümanlar geçirmek (örneğin bir `int` beklenirken bir `list` geçirmek) bir `TypeError` ile sonuçlanmalıdır, ancak yanlış değere sahip argümanlar geçirmek (örneğin beklenen sınırların dışında bir sayı) bir `ValueError` ile sonuçlanmalıdır.

exception UnboundLocalError

  Bir işlev veya yöntemde yerel(local) bir değişkene referans yapıldığında, ancak bu değişkene herhangi bir değer bağlanmadığında ortaya çıkar. Bu, `NameError` alt sınıfıdır.

exception UnicodeError

  Unicode ile ilgili bir kodlama veya kod çözme hatası oluştuğunda ortaya çıkar. Bu, `ValueError` alt sınıfıdır.

  `UnicodeError` kodlama(encoding) veya kod çözme(decoding) hatasını tanımlayan özniteliklere sahiptir. Örneğin, `err.object[err.start:err.end]` codec’in başarısız olduğu belirli geçersiz girdiyi verir.

  encoding

    Hataya neden olan kodlamanın adı.

  reason

    Belirli kodek hatasını açıklayan bir dize.

  object

    Kodek’in kodlamaya veya kodunu çözmeye çalıştığı nesne.

  start

    `object` içindeki geçersiz verilerin ilk indeksi.

  end

    `object` içindeki son geçersiz veriden sonraki dizin.

exception UnicodeEncodeError

  Kodlama sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu `UnicodeError` alt sınıfıdır.

exception UnicodeDecodeError

  Kod çözme sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu `UnicodeError` alt sınıfıdır.

exception UnicodeTranslateError

  Çeviri sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu `UnicodeError` alt sınıfıdır.

exception ValueError

  Bir işlem veya fonksiyon doğru türde ancak uygun olmayan bir değere sahip bir argüman aldığında ve durum `IndexError` gibi daha kesin bir istisna ile tanımlanmadığında ortaya çıkar.

exception ZeroDivisionError

  Bir bölme veya modulo işleminin ikinci bağımsız değişkeni sıfır olduğunda ortaya çıkar. İlişkili değer, işlenenlerin ve işlemin türünü belirten bir dizedir.

Aşağıdaki istisnalar önceki sürümlerle uyumluluk için tutulur; Python 3.3’ten başlayarak, `OSError` takma adlarıdır.

exception EnvironmentError

exception IOError

exception WindowsError

  Yalnızca Windows’ta kullanılabilir.

### İşletim sistemi istisnaları(ES exceptions)

Aşağıdaki istisnalar `OSError` alt sınıflarıdır, sistem hata koduna bağlı olarak ortaya çıkarlar.

exception BlockingIOError

  Bir işlem, bloklanmayan işlem(non-blocking operation) için ayarlanmış bir nesne (örn. soket) üzerinde bloklandığında ortaya çıkar. `errno` `EAGAIN`, `EALREADY`, `EWOULDBLOCK` ve `EINPROGRESS` değerlerine karşılık gelir.

  `OSError` özelliğine ek olarak, `BlockingIOError` bir özelliğe daha sahip olabilir:

  characters_written

    “Bu öznitelik, `io` modülünden gelen arabellekli I/O sınıflarını kullanırken, akışa yazılmadan önce engellendiğinde yazılan karakterlerin sayısını içeren bir tamsayı içerir.”

exception ChildProcessError

  Bir alt süreç(child process) üzerindeki bir işlem başarısız olduğunda yükseltilir. Karşılığı `errno` `ECHILD`.

exception ConnectionError

  Bağlantı ile ilgili konular için bir temel sınıf.

  Alt sınıflar `BrokenPipeError`, `ConnectionAbortedError`, `ConnectionRefusedError` ve `ConnectionResetError`.

exception BrokenPipeError

  `ConnectionError` alt sınıfı, diğer ucu kapatılmış bir pipe’ın üzerine yazmaya çalışıldığında veya yazmaya kapatılmış bir soket üzerine yazmaya çalışıldığında ortaya çıkar. `errno` `EPIPE` ve `ESHUTDOWN` değerlerine karşılık gelir.

exception ConnectionAbortedError

  Bir bağlantı girişimi eş(peer) tarafından iptal edildiğinde ortaya çıkan `ConnectionError` alt sınıfı. Karşılığı `errno` `ECONNABORTED`.

exception ConnectionRefusedError

  Bir bağlantı girişimi eş(peer) tarafından reddedildiğinde ortaya çıkan `ConnectionError` alt sınıfı. Karşılığı `errno` `ECONNREFUSED`.

exception ConnectionResetError

  Bir bağlantı eş(peer) tarafından sıfırlandığında ortaya çıkan `ConnectionError` alt sınıfı. Karşılığı `errno` `ECONNRESET`.

exception FileExistsError

  Zaten var olan bir dosya veya dizin oluşturulmaya çalışıldığında ortaya çıkar. Karşılığı `errno` `EEXIST`.

exception FileNotFoundError

  Bir dosya veya dizin isteğinde(request) ancak mevcut olmadığında ortaya çıakr. Karşılığı `errno` `ENOENT`.

exception InterruptedError

  Bir sistem çağrısı gelen bir sinyal tarafından kesintiye uğradığında ortaya çıkar. Karşılığı `errno` `EINTR`.

  3.5 sürümünde değişti: Python, bir sistem çağrısı bir sinyal tarafından kesildiğinde, artık sinyal işleyicisi bir istisna yükseltmediği sürece (PEP 475 için gerekçeye bakın), `InterruptedError` istisnası yükseltmek yerine sistem çağrılarını tekrar deniyor.

exception IsADirectoryError

  Bir dizin üzerinde bir dosya işlemi (örneğin `os.remove()`) istendiğinde ortaya çıkar. Karşılığı `errno` `EISDIR`.

exception NotADirectoryError

  Dizin olmayan bir şey üzerinde bir dizin işlemi (örneğin `os.listdir()`) istendiğinde ortaya çıakr. Çoğu POSIX platformunda, bir işlem dizin olmayan bir dosyayı bir dizinmiş gibi açmaya veya geçmeye çalışırsa da ortaya çıkabilir. Karşılığı `errno` `ENOTDIR`.

exception PermissionError

  Yeterli erişim hakları (örneğin dosya sistemi izinleri) olmadan bir işlem çalıştırılmaya çalışıldığında ortaya çıkar. `errno` `EACCES`, `EPERM` ve `ENOTCAPABLE` değerlerine karşılık gelir.

  3.11.1 sürümünde değişti: WASI’nin `ENOTCAPABLE` ifadesi artık `PermissionError` ile eşleştirilmiştir.

exception ProcessLookupError

  Belirli bir süreç mevcut olmadığında ortaya çıkar. Karşılığı `errno` `ESRCH`.

exception TimeoutError

  Bir sistem işlevi sistem düzeyinde zaman aşımına uğradığında ortaya çıkar. Karşılığı `errno` `ETIMEDOUT`.

Added in version 3.3: Yukarıdaki tüm `OSError` alt sınıfları eklendi.

Ayrıca bakınız

PEP 3151 - İşletim sistemi ve IO istisna hiyerarşisinin yeniden düzenlenmesi

## Uyarılar

Aşağıdaki istisnalar uyarı kategorileri olarak kullanılır; daha fazla ayrıntı için Warning Categories belgesine bakın.

exception Warning

  Uyarı kategorileri için temel sınıf.

exception UserWarning

  Kullanıcı kodu tarafından oluşturulan uyarılar için temel sınıf.

exception DeprecationWarning

  Kullanımdan kaldırılan özelliklerle ilgili uyarılar diğer Python geliştiricilerine yönelik olduğunda bu uyarılar için temel sınıf.

  `__main__` modülü (PEP 565) dışında varsayılan uyarı filtreleri tarafından yok sayılır. Python Geliştirme Modu etkinleştirildiğinde bu uyarı gösterilir.

  Kullanımdan kaldırma politikası PEP 387 bölümünde açıklanmaktadır.

exception PendingDeprecationWarning

  Eski olan ve gelecekte kullanımdan kaldırılması beklenen, ancak şu anda kullanımdan kaldırılmayan özelliklerle ilgili uyarılar için temel sınıf.

  Bu sınıf nadiren kullanılır çünkü yaklaşan olası bir kullanımdan kaldırma hakkında bir uyarı yayınlamak alışılmadık bir durumdur ve `DeprecationWarning` zaten aktif olan kullanımdan kaldırmalar için tercih edilir.

  Varsayılan uyarı filtreleri tarafından yok sayılır. Python Geliştirme Modu etkinleştirildiğinde bu uyarı gösterilir.

  Kullanımdan kaldırma politikası PEP 387 bölümünde açıklanmaktadır.

exception SyntaxWarning

  Şüpheli sözdizimiyle ilgili uyarılar için temel sınıf.

exception RuntimeWarning

  Şüpheli çalışma zamanı davranışları hakkındaki uyarılar için temel sınıf.

exception FutureWarning

  Kullanımdan kaldırılan özelliklerle ilgili uyarılar Python’da yazılmış uygulamaların son kullanıcılarına yönelik olduğunda bu uyarılar için temel sınıf.

exception ImportWarning

  Modül içe aktarmalarındaki olası hatalar hakkında uyarılar için temel sınıf.

  Varsayılan uyarı filtreleri tarafından yok sayılır. Python Geliştirme Modu etkinleştirildiğinde bu uyarı gösterilir.

exception UnicodeWarning

  Unicode ile ilgili uyarılar için temel sınıf.

exception EncodingWarning

  Kodlamalarla ilgili uyarılar için temel sınıf.

  Ayrıntılar için Opt-in EncodingWarning sayfasına bakın.

  Added in version 3.10.

exception BytesWarning

  `bytes` ve `bytearray` ile ilgili uyarılar için temel sınıf.

exception ResourceWarning

  Kaynak kullanımıyla ilgili uyarılar için temel sınıf.

  Varsayılan uyarı filtreleri tarafından yok sayılır. Python Geliştirme Modu etkinleştirildiğinde bu uyarı gösterilir.

  Added in version 3.2.

## İstisna grupları

Aşağıdakiler, birden fazla ilgisiz istisnayı yükseltmek gerektiğinde kullanılır. Bunlar istisna hiyerarşisinin bir parçasıdır, bu nedenle diğer tüm istisnalar gibi `except` ile ele alınabilirler. Ayrıca, içerdikleri istisnaların türlerine göre alt gruplarını eşleştiren `except*` tarafından tanınırlar.

exception ExceptionGroup(msg, excs)

exception BaseExceptionGroup(msg, excs)

  Bu istisna türlerinin her ikisi de istisnaları `excs` dizisine sarar. `msg` parametresi bir string olmalıdır. İki sınıf arasındaki fark, `BaseExceptionGroup`, `BaseException`’ı genişletir ve herhangi bir istisnayı sarabilirken, `ExceptionGroup`, `Exception`’ı genişletir ve yalnızca `Exception`’ın alt sınıflarını sarabilir. Bu tasarım sayesinde `except Exception` bir `ExceptionGroup` u yakalar ancak `BaseExceptionGroup` u yakalayamaz.

  İçerdiği tüm istisnalar `Exception` örneğiyse, `BaseExceptionGroup` yapıcısı bir `BaseExceptionGroup` yerine bir `ExceptionGroup` döndürür, böylece seçimi otomatik hale getirmek için kullanılabilir. Öte yandan, `ExceptionGroup` kurucusu, içerdiği herhangi bir istisna bir `Exception` alt sınıfı değilse bir `TypeError` yükseltir.

  message

    Kurucunun `msg` argümanı. Bu salt okunur bir niteliktir.

  exceptions

    Yapıcıya verilen `excs` dizisindeki istisnaların bir demeti(tuple). Bu salt okunur bir özniteliktir.

  subgroup(condition)

    Yalnızca geçerli gruptaki condition ile eşleşen istisnaları içeren bir istisna grubu veya sonuç boşsa `None` döndürür.

    Koşul, bir istisnayı kabul eden ve alt grupta olması gerekenler için true döndüren bir fonksiyon olabileceği gibi, bir `except` cümlesinde kullanılan kontrolün aynısını kullanarak bir eşleşme olup olmadığını kontrol etmek için kullanılan bir istisna türü veya istisna türleri demeti(tuple) de olabilir.

    Mevcut istisna içindeki iç içe geçme yapısı sonuçta korunur, ayrıca `message`, `__traceback__`, `__cause__`, `__context__` ve `__notes__` alanlarının değerleri de korunur. Boş iç içe gruplar sonuçtan çıkarılır.

    Koşul(condition), üst düzey ve iç içe geçmiş istisna grupları dahil olmak üzere, iç içe geçmiş istisna grubundaki tüm istisnalar için kontrol edilir. Koşul böyle bir istisna grubu için doğruysa, sonuca tam olarak dahil edilir.

  split(condition)

    `subgroup()` gibi, ancak `(match, rest)` çiftini döndürür; burada `match` `subgroup(condition)` ve `rest` kalan eşleşmeyen kısımdır.

  derive(excs)

    Aynı `message` ile bir istisna grubu döndürür, ancak istisnaları `excs` içine sarar.

    This method is used by `subgroup()` and `split()`, which are used in various contexts to break up an exception group. A subclass needs to override it in order to make `subgroup()` and `split()` return instances of the subclass rather than `ExceptionGroup`.

    `subgroup()` ve `split()`, `__traceback__`, `__cause__`, `__context__` ve `__notes__` alanlarını orijinal istisna grubundan `derive()` tarafından döndürülene kopyalar, böylece bu alanların `derive()` tarafından güncellenmesi gerekmez.

        >>> class MyGroup(ExceptionGroup):
        ...     def derive(self, excs):
        ...         return MyGroup(self.message, excs)
        ...
        >>> e = MyGroup("eg", [ValueError(1), TypeError(2)])
        >>> e.add_note("a note")
        >>> e.__context__ = Exception("context")
        >>> e.__cause__ = Exception("cause")
        >>> try:
        ...    raise e
        ... except Exception as e:
        ...    exc = e
        ...
        >>> match, rest = exc.split(ValueError)
        >>> exc, exc.__context__, exc.__cause__, exc.__notes__
        (MyGroup('eg', [ValueError(1), TypeError(2)]), Exception('context'), Exception('cause'), ['a note'])
        >>> match, match.__context__, match.__cause__, match.__notes__
        (MyGroup('eg', [ValueError(1)]), Exception('context'), Exception('cause'), ['a note'])
        >>> rest, rest.__context__, rest.__cause__, rest.__notes__
        (MyGroup('eg', [TypeError(2)]), Exception('context'), Exception('cause'), ['a note'])
        >>> exc.__traceback__ is match.__traceback__ is rest.__traceback__
        True

  `BaseExceptionGroup` öğesinin `__new__()` öğesini tanımladığına dikkat edin, bu nedenle farklı bir kurucu imzasına ihtiyaç duyan alt sınıfların `__init__()` yerine bunu geçersiz kılmaları gerekir. Örneğin, aşağıda bir exit_code kabul eden ve grubun mesajını bundan oluşturan bir istisna grubu alt sınıfı tanımlanmaktadır:

      class Errors(ExceptionGroup):
         def __new__(cls, errors, exit_code):
            self = super().__new__(Errors, f"exit code: {exit_code}", errors)
            self.exit_code = exit_code
            return self

         def derive(self, excs):
            return Errors(excs, self.exit_code)

  Tıpkı `ExceptionGroup` gibi, `BaseExceptionGroup` alt sınıfı olan `Exception` alt sınıfı da yalnızca `Exception` örneklerini sarabilir.

  Added in version 3.11.

## İstisna hiyerarşisi

Gömülü istisnalar için sınıf hiyerarşisi şöyledir:

    BaseException
     ├── BaseExceptionGroup
     ├── GeneratorExit
     ├── KeyboardInterrupt
     ├── SystemExit
     └── Exception
          ├── ArithmeticError
          │    ├── FloatingPointError
          │    ├── OverflowError
          │    └── ZeroDivisionError
          ├── AssertionError
          ├── AttributeError
          ├── BufferError
          ├── EOFError
          ├── ExceptionGroup [BaseExceptionGroup]
          ├── ImportError
          │    └── ModuleNotFoundError
          ├── LookupError
          │    ├── IndexError
          │    └── KeyError
          ├── MemoryError
          ├── NameError
          │    └── UnboundLocalError
          ├── OSError
          │    ├── BlockingIOError
          │    ├── ChildProcessError
          │    ├── ConnectionError
          │    │    ├── BrokenPipeError
          │    │    ├── ConnectionAbortedError
          │    │    ├── ConnectionRefusedError
          │    │    └── ConnectionResetError
          │    ├── FileExistsError
          │    ├── FileNotFoundError
          │    ├── InterruptedError
          │    ├── IsADirectoryError
          │    ├── NotADirectoryError
          │    ├── PermissionError
          │    ├── ProcessLookupError
          │    └── TimeoutError
          ├── ReferenceError
          ├── RuntimeError
          │    ├── NotImplementedError
          │    └── RecursionError
          ├── StopAsyncIteration
          ├── StopIteration
          ├── SyntaxError
          │    └── IndentationError
          │         └── TabError
          ├── SystemError
          ├── TypeError
          ├── ValueError
          │    └── UnicodeError
          │         ├── UnicodeDecodeError
          │         ├── UnicodeEncodeError
          │         └── UnicodeTranslateError
          └── Warning
               ├── BytesWarning
               ├── DeprecationWarning
               ├── EncodingWarning
               ├── FutureWarning
               ├── ImportWarning
               ├── PendingDeprecationWarning
               ├── ResourceWarning
               ├── RuntimeWarning
               ├── SyntaxWarning
               ├── UnicodeWarning
               └── UserWarning