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. Birexceptveyafinallycümlesi veya birwithdeyimi kullanıldığında bir istisna ele alınabilir.Bu örtük istisna bağlamı(implicit exception context),
fromileraise: kullanılarak açık bir neden ile desteklenebilir:raise new_exc from original_exc
Bu
fromifadesini takip eden ifade bir istisna veyaNoneolmalıdır. Ortaya çıkan istisna üzerinde__cause__olarak ayarlanacaktır.__cause__ayarı aynı zamanda__suppress_context__niteliğini de örtük(implicit) olarakTrueolarak ayarlar, böyleceraise new_exc from Nonekullanımı görüntüleme amacıyla eski istisnayı yenisiyle değiştirirken (örneğinKeyErrorifadesiniAttributeErrorifadesine 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__Noneve__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
Exceptionkullanın). Bu sınıfın bir örneği üzerindestr()ç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 (
OSErrorgibi) 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 birOtherExceptionörneğine dönüştürebileceğimizi göstermektedir. Bir kez oluşturulduğunda, geçerli kare, orijinalSomeExceptionı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
notedizesini ekleyin. Eğernotebir string değilse birTypeErroroluşur.Added in version 3.11.
- __notes__¶
Bu istisnanın
add_note()ile eklenen notlarının bir listesi. Bu nitelikadd_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 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ğrudancodecs.lookup()tarafından oluşturulabilir.
Somut istisnalar (Concrete exceptions)¶
Aşağıdaki istisnalar genellikle ortaya çıkan istisnalardır.
- 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,
TypeErroryükseltilir)The optional name and obj keyword-only arguments set the corresponding attributes:
- name¶
The name of the attribute that was attempted to be accessed.
- obj¶
The object that was accessed for the named attribute.
- exception EOFError¶
Raised when the
input()function hits an end-of-file condition (EOF) without reading any data. (Note: theio.IOBase.read()andio.IOBase.readline()methods return an empty string when they hit EOF.)
- exception FloatingPointError¶
Şu anda kullanılmıyor.
- exception GeneratorExit¶
Bir generator veya coroutine kapatıldığında ortaya çıkar; bkz
generator.close()vecoroutine.close(). Teknik olarak bir hata olmadığı içinExceptionyerine doğrudanBaseExceptiondan miras alınır.
- exception ImportError¶
Bir
importdeyimi bir modülü yüklemeye çalışırken sorun yaşadığında ortaya çıkar. Ayrıcafrom ... importiç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.
- exception ModuleNotFoundError¶
Bir modül bulunamadığında
importtarafından ortaya çıkarılanImportErroralt sınıfı. Ayrıcasys.modulesiçindeNonebulunduğ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,
TypeErroroluş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,
Exceptionkodunu yakalayan kod tarafından yanlışlıkla yakalanmamak ve böylece yorumlayıcının çıkmasını önlemek içinBaseExceptionkodundan miras alır.Not
Bir
KeyboardInterruptyakalamak özel dikkat gerektirir. Tahmin edilemeyen noktalarda yükseltilebildiğinden, bazı durumlarda çalışan programı tutarsız bir durumda bırakabilir. Genellikle en iyisiKeyboardInterruptı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.
The optional name keyword-only argument sets the attribute:
- name¶
The name of the variable that was attempted to be accessed.
3.10 sürümünde değişti:
nameniteliğ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ı
NotImplementedErrorandNotImplementedare not interchangeable. This exception should only be used as described above; seeNotImplementedfor 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
Noneolur. Geriye dönük uyumluluk için, üç argüman geçilirse,argsniteliğ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
OSErroralt sınıfını döndürür. Belirli alt sınıf sonerrnodeğerine bağlıdır. Bu davranış yalnızcaOSErrordoğ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
errnodan alınan sayısal bir hata kodu.
- winerror¶
Windows altında, bu size yerel Windows hata kodunu verir. O halde
errnoniteliğ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 vewinerrorniteliği mevcut değildir.
- strerror¶
The corresponding error message, as provided by the operating system. It is formatted by the C functions
perror()under POSIX, andFormatMessage()under Windows.
- filename¶
- filename2¶
Bir dosya sistemi yolu içeren istisnalar için (örneğin
open()veyaos.unlink()),filenamefonksiyona aktarılan dosya adıdır. İki dosya sistemi yolu içeren fonksiyonlar için (os.rename()gibi),filename2fonksiyona 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.errorandmmap.errorhave been merged intoOSError, and the constructor may return a subclass.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
MemoryErrorthan 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 PythonFinalizationError¶
This exception is derived from
RuntimeError. It is raised when an operation is blocked during interpreter shutdown also known as Python finalization.Examples of operations which can be blocked with a
PythonFinalizationErrorduring the Python finalization:See also the
sys.is_finalizing()function.Added in version 3.13: Önceden, düz bir
RuntimeErroroluşturulurdu.3.14 sürümünde değişti:
threading.Thread.join()can now raise this exception.
- 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
RuntimeErroroluş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çinweakrefmodü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 olarakNonedeğ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çinvalueparametresi olarak kullanılır.Bir generator(işleyici) kodu doğrudan veya dolaylı olarak
StopIterationdeğerini oluşturunca,RuntimeErrordeğerine dönüştürülür (yeni istisnanın nedeni olarakStopIterationdeğeri korunur).3.3 sürümünde değişti:
valueniteliğ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_stoparacı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
StopIterationhatası birRuntimeErrorhatası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
importdeyiminde, yerleşikcompile(),exec()veyaeval()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
linenodeğeri 1’dir.
- offset¶
Hatanın meydana geldiği satırdaki sütun. Bu 1 indekslidir: satırdaki ilk karakter 1
offsetdeğ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_linenoveend_offsetnitelikleri eklendi.
- exception IndentationError¶
Yanlış girintileme ile ilgili sözdizimi hataları için temel sınıf. Bu,
SyntaxErroralt 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
NULLvalue 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¶
This exception is raised by the
sys.exit()function. It inherits fromBaseExceptioninstead ofExceptionso that it is not accidentally caught by code that catchesException. This allows the exception to properly propagate up and cause the interpreter to exit. When it is not handled, the Python interpreter exits; no stack traceback is printed. The constructor accepts the same optional argument passed tosys.exit(). If the value is an integer, it specifies the system exit status (passed to C’sexit()function); if it isNone, the exit status is zero; if it has another type (such as a string), the object’s value is printed and the exit status is one.Bir
sys.exit()çağrısı bir istisnaya çevrilir, böylece temizleme işleyicileri(clean-up handlers) (trydeyimlerininfinallycü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 gerekliyseos._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,
NotImplementedErroroluşması gereken uygun istisnadır.Yanlış türde argümanlar geçirmek (örneğin bir
intbeklenirken birlistgeçirmek) birTypeErrorile sonuçlanmalıdır, ancak yanlış değere sahip argümanlar geçirmek (örneğin beklenen sınırların dışında bir sayı) birValueErrorile 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,
NameErroralt sınıfıdır.
- exception UnicodeError¶
Unicode ile ilgili bir kodlama veya kod çözme hatası oluştuğunda ortaya çıkar. Bu,
ValueErroralt sınıfıdır.UnicodeErrorkodlama(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.
- exception UnicodeEncodeError¶
Kodlama sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu
UnicodeErroralt sınıfıdır.
- exception UnicodeDecodeError¶
Kod çözme sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu
UnicodeErroralt sınıfıdır.
- exception UnicodeTranslateError¶
Çeviri sırasında Unicode ile ilgili bir hata oluştuğunda ortaya çıkar. Bu
UnicodeErroralt 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
IndexErrorgibi 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.
errnoEAGAIN,EALREADY,EWOULDBLOCKveEINPROGRESSdeğerlerine karşılık gelir.OSErrorözelliğine ek olarak,BlockingIOErrorbir özelliğe daha sahip olabilir:
- exception ChildProcessError¶
Bir alt süreç(child process) üzerindeki bir işlem başarısız olduğunda yükseltilir. Karşılığı
errnoECHILD.
- exception ConnectionError¶
Bağlantı ile ilgili konular için bir temel sınıf.
Alt sınıflar
BrokenPipeError,ConnectionAbortedError,ConnectionRefusedErrorveConnectionResetError.
- exception BrokenPipeError¶
ConnectionErroralt 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.errnoEPIPEveESHUTDOWNdeğerlerine karşılık gelir.
- exception ConnectionAbortedError¶
Bir bağlantı girişimi eş(peer) tarafından iptal edildiğinde ortaya çıkan
ConnectionErroralt sınıfı. KarşılığıerrnoECONNABORTED.
- exception ConnectionRefusedError¶
Bir bağlantı girişimi eş(peer) tarafından reddedildiğinde ortaya çıkan
ConnectionErroralt sınıfı. KarşılığıerrnoECONNREFUSED.
- exception ConnectionResetError¶
Bir bağlantı eş(peer) tarafından sıfırlandığında ortaya çıkan
ConnectionErroralt sınıfı. KarşılığıerrnoECONNRESET.
- exception FileExistsError¶
Zaten var olan bir dosya veya dizin oluşturulmaya çalışıldığında ortaya çıkar. Karşılığı
errnoEEXIST.
- exception FileNotFoundError¶
Bir dosya veya dizin isteğinde(request) ancak mevcut olmadığında ortaya çıakr. Karşılığı
errnoENOENT.
- exception InterruptedError¶
Bir sistem çağrısı gelen bir sinyal tarafından kesintiye uğradığında ortaya çıkar. Karşılığı
errnoEINTR.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),
InterruptedErroristisnası 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ığıerrnoEISDIR.
- 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ığıerrnoENOTDIR.
- exception PermissionError¶
Yeterli erişim hakları (örneğin dosya sistemi izinleri) olmadan bir işlem çalıştırılmaya çalışıldığında ortaya çıkar.
errnoEACCES,EPERMveENOTCAPABLEdeğerlerine karşılık gelir.3.11.1 sürümünde değişti: WASI’nin
ENOTCAPABLEifadesi artıkPermissionErrorile eşleştirilmiştir.
- exception ProcessLookupError¶
Belirli bir süreç mevcut olmadığında ortaya çıkar. Karşılığı
errnoESRCH.
- exception TimeoutError¶
Bir sistem işlevi sistem düzeyinde zaman aşımına uğradığında ortaya çıkar. Karşılığı
errnoETIMEDOUT.
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
DeprecationWarningzaten 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.
This warning is typically emitted when compiling Python source code, and usually won’t be reported when running already compiled code.
- 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 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ı
excsdizisine sarar.msgparametresi 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ızcaException’ın alt sınıflarını sarabilir. Bu tasarım sayesindeexcept ExceptionbirExceptionGroupu yakalar ancakBaseExceptionGroupu yakalayamaz.İçerdiği tüm istisnalar
Exceptionörneğiyse,BaseExceptionGroupyapıcısı birBaseExceptionGroupyerine birExceptionGroupdöndürür, böylece seçimi otomatik hale getirmek için kullanılabilir. Öte yandan,ExceptionGroupkurucusu, içerdiği herhangi bir istisna birExceptionalt sınıfı değilse birTypeErroryükseltir.- message¶
Kurucunun
msgargümanı. Bu salt okunur bir niteliktir.
- exceptions¶
Yapıcıya verilen
excsdizisindeki 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
Nonedöndürür.The condition can be an exception type or tuple of exception types, in which case each exception is checked for a match using the same check that is used in an
exceptclause. The condition can also be a callable (other than a type object) that accepts an exception as its single argument and returns true for the exceptions that should be in the subgroup.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.
Added in version 3.13:
conditioncan be any callable which is not a type object.
- split(condition)¶
subgroup()gibi, ancak(match, rest)çiftini döndürür; buradamatchsubgroup(condition)verestkalan eşleşmeyen kısımdır.
- derive(excs)¶
Aynı
messageile bir istisna grubu döndürür, ancak istisnalarıexcsiçine sarar.This method is used by
subgroup()andsplit(), which are used in various contexts to break up an exception group. A subclass needs to override it in order to makesubgroup()andsplit()return instances of the subclass rather thanExceptionGroup.subgroup()vesplit(),__traceback__,__cause__,__context__ve__notes__alanlarını orijinal istisna grubundanderive()tarafından döndürülene kopyalar, böylece bu alanlarınderive()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
Note that
BaseExceptionGroupdefines__new__(), so subclasses that need a different constructor signature need to override that rather than__init__(). For example, the following defines an exception group subclass which accepts an exit_code and constructs the group’s message from it.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ı
ExceptionGroupgibi,BaseExceptionGroupalt sınıfı olanExceptionalt sınıfı da yalnızcaExceptionö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
│ ├── PythonFinalizationError
│ └── 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