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. Birexcept
veyafinally
cümlesi veya birwith
deyimi kullanıldığında bir istisna ele alınabilir.Bu örtük istisna bağlamı(implicit exception context),
from
ileraise
: kullanılarak açık bir neden ile desteklenebilir:raise new_exc from original_exc
Bu
from
ifadesini takip eden ifade bir istisna veyaNone
olmalıdır. Ortaya çıkan istisna üzerinde__cause__
olarak ayarlanacaktır.__cause__
ayarı aynı zamanda__suppress_context__
niteliğini de örtük(implicit) olarakTrue
olarak ayarlar, böyleceraise new_exc from None
kullanımı görüntüleme amacıyla eski istisnayı yenisiyle değiştirirken (örneğinKeyError
ifadesiniAttributeError
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.
CPython uygulama ayrıntısı: Ç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 ü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 (
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 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
note
dizesini ekleyin. Eğernote
bir string değilse birTypeError
oluş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,
TypeError
yükseltilir)name
veobj
ö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
veobj
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()
veio.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()
vecoroutine.close()
. Teknik olarak bir hata olmadığı içinException
yerine doğrudanBaseException
dan miras alınır.
- exception ImportError¶
Bir
import
deyimi bir modülü yüklemeye çalışırken sorun yaşadığında ortaya çıkar. Ayrıcafrom ... 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.
- exception ModuleNotFoundError¶
Bir modül bulunamadığında
import
tarafından ortaya çıkarılanImportError
alt sınıfı. Ayrıcasys.modules
içindeNone
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çinBaseException
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 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.
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.Not
NotImplementedError
andNotImplemented
are not interchangeable, even though they have similar names and purposes. SeeNotImplemented
for details on when to use it.
- 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 sonerrno
değerine bağlıdır. Bu davranış yalnızcaOSError
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 vewinerror
niteliği mevcut değildir.
- strerror¶
İşletim sistemi tarafından sağlanan ilgili hata mesajı. POSIX altında
perror()
ve Windows altındaFormatMessage()
C işlevleri tarafından biçimlendirilir.
- filename¶
- filename2¶
Bir dosya sistemi yolu içeren istisnalar için (örneğin
open()
veyaos.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
vemmap.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 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
PythonFinalizationError
during the Python finalization:Creating a new Python thread.
See also the
sys.is_finalizing()
function.Added in version 3.13: Önceden, düz bir
RuntimeError
oluşturulurdu.
- 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çinweakref
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 olarakNone
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çinvalue
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 olarakStopIteration
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ı birRuntimeError
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ş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
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
veend_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¶
Yorumlayıcı dahili bir hata bulduğunda, ancak durum tüm umutlarını yitirmesine neden olacak kadar ciddi görünmediğinde yükseltilir. İlişkili değer, neyin yanlış gittiğini gösteren bir dizedir (düşük seviye terimlerle).
Bunu Python yorumlayıcınızın yazarına veya geliştiricisine bildirmelisiniz. Python yorumlayıcısının sürümünü (
sys.version
; etkileşimli bir Python oturumunun başlangıcında da yazdırılır), tam hata mesajını (istisnanın ilişkili değeri) ve mümkünse hatayı tetikleyen programın kaynağını bildirdiğinizden emin olun.
- exception SystemExit¶
Bu istisna
sys.exit()
işlevi tarafından ortaya çıkartılır. YanlışlıklaException
kodunu yakalayan kod tarafından yakalanmaması içinException
yerineBaseException
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’ninexit()
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
deyimlerininfinally
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 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,
NotImplementedError
oluşması gereken uygun istisnadır.Yanlış türde argümanlar geçirmek (örneğin bir
int
beklenirken birlist
geçirmek) birTypeError
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ı) birValueError
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.
- 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
veEINPROGRESS
değerlerine karşılık gelir.OSError
özelliğine ek olarak,BlockingIOError
bir ö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ığı
errno
ECHILD
.
- exception ConnectionError¶
Bağlantı ile ilgili konular için bir temel sınıf.
Alt sınıflar
BrokenPipeError
,ConnectionAbortedError
,ConnectionRefusedError
veConnectionResetError
.
- 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
veESHUTDOWN
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
veENOTCAPABLE
değerlerine karşılık gelir.3.11.1 sürümünde değişti: WASI’nin
ENOTCAPABLE
ifadesi artıkPermissionError
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 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ızcaException
’ın alt sınıflarını sarabilir. Bu tasarım sayesindeexcept Exception
birExceptionGroup
u yakalar ancakBaseExceptionGroup
u yakalayamaz.İçerdiği tüm istisnalar
Exception
örneğiyse,BaseExceptionGroup
yapıcısı birBaseExceptionGroup
yerine birExceptionGroup
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 birException
alt sınıfı değilse birTypeError
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.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
except
clause. 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:
condition
can be any callable which is not a type object.
- split(condition)¶
subgroup()
gibi, ancak(match, rest)
çiftini döndürür; buradamatch
subgroup(condition)
verest
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()
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
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ı olanException
alt 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