Python Hata Kodları
Python hata kodları, program çalışırken oluşan hataları ve istisnaları tanımlar. Bu kodları anlamak, yazılım geliştirme sürecinde hataların kaynağını hızlı bir şekilde tespit etmek ve çözmek için kritik öneme sahiptir. Hatalar, yazım (syntax) hataları, tip uyuşmazlıkları, geçersiz değerler, eksik kaynak erişimi veya mantıksal hatalar gibi durumlarda ortaya çıkar. Python, bu hataları istisnalar (exceptions) aracılığıyla bildirir ve geliştiriciye hataları yönetme imkânı sağlar. Anahtar kavramlar arasında yazım kuralları, istisna türleri, hata ayıklama (debugging) ve hata yönetimi bulunur. Bu rehber, yaygın Python hata kodlarını listeleyerek, her hatanın tetiklenme koşullarını, örneklerini ve uygulanabilir çözüm yöntemlerini sunar. Okuyucu, hataları tanımlama, yakalama ve düzeltme konusunda ileri seviye beceriler kazanacak, backend uygulamalarda güvenilir ve hatasız yazılım geliştirme tekniklerini öğrenebilecektir.
Örnek olarak, kullanıcı girişlerini işleyen ve dosya okuma/yazma işlemleri yapan bir sistem düşünelim. Bu sistemde FileNotFoundError
, ValueError
veya ZeroDivisionError
gibi hatalar meydana gelebilir. Bu hataların doğru şekilde yönetilmesi için kritik işlemler try
blokları içinde yapılır ve her bir istisna türü için ayrı except
blokları tanımlanır. Böylece her hata türüne uygun tepki verilebilir, loglama yapılabilir ve alternatif çözümler uygulanabilir. finally
bloğu, hata oluşsa dahi kaynakların doğru şekilde serbest bırakılmasını sağlar. Bu yaklaşım, beklenmedik çöküşleri önler, kodun sürdürülebilirliğini artırır ve üretim ortamında backend sistemlerin stabil çalışmasını garanti eder.
Example
pythondef veri_islemleri():
try:
# NameError: tanımsız değişken kullanımı
print(tanimsiz_degisken)
# ZeroDivisionError: sıfıra bölme
sonuc = 10 / 0
# ValueError: geçersiz dönüşüm
sayi = int("abc")
# FileNotFoundError: dosya bulunamadı
with open("olmayan_dosya.txt", "r") as f:
icerik = f.read()
# AttributeError: olmayan metod çağrısı
[].appendx(1)
except NameError as ne:
print(f"Yakalanan NameError: {ne}")
except ZeroDivisionError as zde:
print(f"Yakalanan ZeroDivisionError: {zde}")
except ValueError as ve:
print(f"Yakalanan ValueError: {ve}")
except FileNotFoundError as fe:
print(f"Yakalanan FileNotFoundError: {fe}")
except AttributeError as ae:
print(f"Yakalanan AttributeError: {ae}")
except Exception as e:
print(f"Yakalanan başka bir istisna: {e}")
finally:
print("Kaynak temizliği tamamlandı.")
veri_islemleri()
📊 Comprehensive Reference
Error | Description | When It Occurs | Example | Notes |
---|---|---|---|---|
SyntaxError | Sözdizimi hatası | Yanlış Python yazımı | eval('x === 2') |
Derleme sırasında oluşur |
IndentationError | Girinti hatası | Yanlış girinti kullanımı | if True:\nprint("Merhaba") |
SyntaxError alt türü |
TabError | Tab ve boşluk karışımı | Girintide tab ve boşluk karışımı | <tab> <space> print("Merhaba") |
Girinti tutarlılığı gerekir |
NameError | Tanımsız değişken | Var olmayan değişken kullanımı | print(x) |
Sıklıkla debug sırasında |
TypeError | Yanlış tip | Uyumsuz tip ile işlem | 5 + "5" |
Python dinamik tiptedir |
ValueError | Geçersiz değer | Dönüşüm hatası | int("abc") |
Girdi doğrulama gerekir |
IndexError | Indeks dışı | Liste veya dizin dışında erişim | lst = []; lst[1] |
Liste uzunluğunu kontrol edin |
KeyError | Anahtar yok | Sözlükte olmayan anahtar | d = {}; d['x'] |
dict.get() kullanılabilir |
AttributeError | Öznitelik yok | Olmayan metod çağrısı | [].appendx(1) |
Metod ismini kontrol edin |
ZeroDivisionError | Sıfıra bölme | Bölen sıfır | 10 / 0 |
Böleni kontrol edin |
ImportError | Modül bulunamadı | Modül mevcut değil | import olmayan_modul |
Kurulum kontrolü |
ModuleNotFoundError | Modül bulunamadı | Python 3.6+ | import yok_modul |
Python 3.6+ |
FileNotFoundError | Dosya bulunamadı | Dosya yok | open("yok.txt") |
Dosya yolu kontrolü |
IsADirectoryError | Dosya yerine dizin | Dizin açma hatası | open("klasor") |
OS bağımlı |
NotADirectoryError | Dizin yerine dosya | os.listdir("dosya.txt") |
OS bağımlı | |
PermissionError | İzin yok | Erişim reddedildi | open("/root/file") |
İzinleri kontrol edin |
OSError | Sistem hatası | OS kaynak hatası | os.remove("/root/file") |
Diğer hataların üst sınıfı |
OverflowError | Taşma | Çok büyük değer | 2.0**10000 |
Python 3 nadiren |
RecursionError | Derin özyineleme | Çok fazla recursive çağrı | def f(): f(); f() |
sys.setrecursionlimit() |
MemoryError | Bellek yetersiz | Büyük veri | a = 'a'*10**10 |
Sistem bağımlı |
StopIteration | Iterator bitti | Boş iterator | next(iter([])) |
Özelleştirilmiş iteratörler |
AssertionError | Assert başarısız | assert False |
Koşul doğrulama | |
FloatingPointError | Ondalık hata | Geçersiz FP operasyonu | numpy.seterr(all='raise') |
NumPy |
UnicodeError | Kodlama/çözme hatası | "ü".encode("ascii") |
Encoding kontrolü | |
UnicodeDecodeError | Çözümleme hatası | b'\xff'.decode('utf-8') |
Dosya okuma | |
UnicodeEncodeError | Kodlama hatası | "ü".encode("ascii") |
Encoding yanlış | |
RecursionWarning | Özyineleme uyarısı | Derin özyineleme | import warnings |
Kritik değil |
DeprecationWarning | Fonksiyon eski | Eski fonksiyon kullanımı | warnings.warn("deprecated") |
Fonksiyon güncelleyin |
RuntimeWarning | Çalışma zamanı uyarısı | Potansiyel problem | import warnings |
Kritik değil |
FutureWarning | Gelecek uyumluluk | Gelecekte değişecek | warnings.warn("future") |
Uyumluluk |
UserWarning | Kullanıcı uyarısı | Özel uyarı | warnings.warn("user") |
Kritik değil |
PendingDeprecationWarning | Yakında eski | Fonksiyon kaldırılacak | warnings.warn("pending") |
Nadir |
ResourceWarning | Kaynak serbest değil | Dosya kapatılmadı | open("file") |
Python 3+ |
ArithmeticError | Aritmetik hata | Geçersiz işlem | int("x")/0 |
Diğer hataların üst sınıfı |
BufferError | Buffer hatası | Yanlış buffer işlemi | memoryview(b'').release() |
Nadir |
ConnectionError | Bağlantı hatası | Ağ hatası | requests.get("bad_url") |
Ağa bağlı |
BrokenPipeError | Pipe kırık | Kapalı pipe | os.write(fd, b'data') |
Unix |
ChildProcessError | Alt süreç hatası | Alt süreç problemi | os.waitpid(-1) |
Nadir |
EOFError | Beklenmedik dosya sonu | EOF input | input() EOF |
Boş input |
EnvironmentError | Ortam hatası | OS veya ortam problemi | os.remove("/root/file") |
OSError üst sınıfı |
GeneratorExit | Generator çıkışı | gen.close() |
Generatorlar | |
IOError | G/Ç hatası | Okuma/yazma hatası | open("/root/file") |
Python 3 -> OSError |
InterruptedError | Kesildi | Sistem çağrısı kesildi | os.read(fd, 0) |
Unix |
LookupError | Arama hatası | Geçersiz arama | d['x'] |
LookupError üst sınıfı |
ReferenceError | Geçersiz referans | Weakref süresi doldu | import weakref |
Nadir |
RuntimeError | Çalışma zamanı hatası | raise RuntimeError() |
Genel hata | |
StopAsyncIteration | Async iterator bitti | async for |
Python 3.5+ | |
SyntaxWarning | Sözdizimi uyarısı | Şüpheli syntax | warnings.warn("syntax") |
Programı durdurmaz |
SystemError | Python iç hatası | Internal error | sys._getframe(0) |
Nadir |
SystemExit | Sistem çıkışı | sys.exit() |
Program sonlandırılır | |
TimeoutError | Zaman aşımı | Timeout | socket.settimeout() |
Ağ |
UnboundLocalError | Atanmamış yerel değişken | Önce kullanım | x=1; def f(): print(x); x=2 |
NameError alt türü |
ZeroDivisionError | Sıfıra bölme | Bölen sıfır | 10 / 0 |
Böleni kontrol edin |
📊 Complete Properties Reference
Error | Exception Type | Default Behavior | Description | Compatibility |
---|---|---|---|---|
SyntaxError | Derleme hatası | Programı durdurur | Yanlış Python yazımı | Tüm Python sürümleri |
IndentationError | SyntaxError alt türü | Programı durdurur | Yanlış girinti | Tüm Python sürümleri |
TabError | IndentationError alt türü | Programı durdurur | Tab ve boşluk karışımı | Tüm Python sürümleri |
NameError | İstisna | Hata verir | Tanımsız değişken kullanımı | Tüm Python sürümleri |
TypeError | İstisna | Hata verir | Uyumsuz tip işlemleri | Tüm Python sürümleri |
ValueError | İstisna | Hata verir | Geçersiz değer | Tüm Python sürümleri |
IndexError | İstisna | Hata verir | Dizin dışı erişim | Tüm Python sürümleri |
KeyError | İstisna | Hata verir | Sözlükte olmayan anahtar | Tüm Python sürümleri |
AttributeError | İstisna | Hata verir | Olmayan metod/özellik çağrısı | Tüm Python sürümleri |
ZeroDivisionError | İstisna | Hata verir | Sıfıra bölme | Tüm Python sürümleri |
... | ... | ... | ... | ... |
🧠 Bilginizi Test Edin
Test Your Knowledge
Python Hata Kodları ile ilgili bilginizi test edin
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek