Python'da hatalar, programın çalışmasını durduran beklenmedik durumlar olarak karşımıza çıkar. Bu hatalar, programlama sırasında çeşitli nedenlerden dolayı oluşabilir. Python'da bu hataları ele almak için belirli hata türleri ve bu türlerin nasıl ortaya çıktığını anlamak önemlidir. İşte Python'daki başlıca hata türleri:
1. SyntaxError (Sözdizimi Hatası)
- Python kodunun yazım kurallarına uymadığında ortaya çıkar.
- Bu hata, program çalıştırılmadan önce Python tarafından tespit edilir.
- Genellikle eksik parantezler, yanlış yazılmış anahtar kelimeler veya hatalı blok yapısı gibi sebeplerden oluşur.
Örnek:
if True print("Merhaba") # SyntaxError: invalid syntax
Yukarıdaki örnekte, if
koşulunun altında bir blok olmalı ancak burada eksik olduğu için SyntaxError
hatası oluşur.
2. IndentationError (Girinti Hatası)
- Python'da blok yapısı, girintilerle (indentation) belirlenir. Girintilerin yanlış veya tutarsız kullanılması bu hataya yol açar.
- Bir bloğun içindeki tüm satırlar aynı hizaya sahip olmalıdır.
Örnek:
def fonksiyon():
print("Merhaba")
print("Dünya") # IndentationError: unexpected indent
Yukarıdaki örnekte, ikinci print
satırı yanlış hizalandığı için IndentationError
hatası ortaya çıkar.
3. TypeError (Tür Hatası)
- Python'da veri türlerinin uyumsuz olduğu işlemlerde bu hata oluşur.
- Örneğin, bir tam sayı ile bir string'i toplamak gibi işlemler bu hatayı tetikler.
Örnek:
sayi = 5 + "10" # TypeError: unsupported operand type(s) for +: 'int' and 'str'
Burada 5
bir tam sayı (int
), "10"
ise bir string olduğu için bu iki türü bir arada toplamak bir TypeError ile sonuçlanır.
4. ValueError (Değer Hatası)
- Bir işlev, doğru türde ancak uygun olmayan bir değer aldığında bu hata ortaya çıkar.
- Genellikle veri türünün dönüşüm işlemlerinde yanlış bir değer verildiğinde görülür.
Örnek:
sayi = int("Merhaba") # ValueError: invalid literal for int() with base 10: 'Merhaba'
Bu örnekte, int()
fonksiyonu yalnızca sayısal karakterler içeren bir string'i tam sayıya çevirebilir, ancak "Merhaba"
bir string olduğundan ValueError hatası alırız.
5. NameError (İsim Hatası)
- Tanımlanmamış bir değişken veya işlev kullanıldığında bu hata meydana gelir.
- Değişkenin ya hiç tanımlanmamış ya da yanlış yazılmış olması bu hatayı tetikleyebilir.
Örnek:
print(isim) # NameError: name 'isim' is not defined
Burada isim
adında bir değişken tanımlanmamış olduğu için NameError hatası alırız.
6. IndexError (Dizin Hatası)
- Bir listenin, dizinin veya herhangi bir sıralı veri yapısının geçersiz bir indeksine erişilmeye çalışıldığında ortaya çıkar.
- İndeks sınırları aşılırsa bu hata meydana gelir.
Örnek:
liste = [1, 2, 3]
print(liste[5]) # IndexError: list index out of range
Bu örnekte, liste[5]
ifadesi, listede olmayan bir indekse erişmeye çalıştığı için IndexError hatası alırız.
7. KeyError (Anahtar Hatası)
- Bir sözlükte (dictionary) var olmayan bir anahtara erişmeye çalışıldığında oluşur.
Örnek:
sozluk = {"ad": "Ahmet", "yas": 25}
print(sozluk["meslek"]) # KeyError: 'meslek'
Burada meslek
anahtarı sözlükte olmadığı için KeyError hatası alırız.
8. AttributeError (Özellik Hatası)
- Bir nesnenin var olmayan bir özelliğine veya metoduna erişmeye çalışıldığında bu hata meydana gelir.
Örnek:
liste = [1, 2, 3]
liste.upper() # AttributeError: 'list' object has no attribute 'upper'
Bu örnekte, upper()
metodu sadece string nesneleri için geçerli olduğu halde, burada bir liste üzerinde kullanıldığından AttributeError hatası oluşur.
9. ZeroDivisionError (Sıfıra Bölme Hatası)
- Bir sayıyı sıfıra bölmeye çalıştığınızda ortaya çıkar.
Örnek:
sayi = 10 / 0 # ZeroDivisionError: division by zero
Sıfıra bölme matematiksel olarak tanımsız olduğundan bu durumda ZeroDivisionError hatası alırız.
10. FileNotFoundError (Dosya Bulunamadı Hatası)
- Açılmak istenen bir dosya bulunamadığında bu hata ortaya çıkar.
Örnek:
with open("olmayan_dosya.txt", "r") as dosya:
icerik = dosya.read() # FileNotFoundError: [Errno 2] No such file or directory: 'olmayan_dosya.txt'
Bu örnekte, belirtilen dosya bulunamadığından FileNotFoundError hatası alırız.
11. ImportError (İçe Aktarma Hatası)
- Bir modül veya içindeki bir öğe bulunamadığında meydana gelir.
Örnek:
import olmayan_modul # ImportError: No module named 'olmayan_modul'
Bu örnekte Python, belirtilen modülü bulamadığı için ImportError hatası verir.
12. RuntimeError (Çalışma Zamanı Hatası)
- Çalışma zamanında gerçekleşen ve belirli bir hata türüne uymayan hatalar için kullanılır. Diğer tüm özel hata türleri dışında kalan genel bir hata türüdür.
Hata Yönetimi (Error Handling)
Python'da hataları kontrol altına almak ve programın çökmesini önlemek için try
, except
blokları kullanılır. Bu şekilde, yukarıda belirtilen hataları yakalayıp programın daha güvenilir bir şekilde çalışmasını sağlayabilirsiniz.
Örnek:
try:
sayi = int(input("Bir sayı girin: "))
sonuc = 10 / sayi
except ValueError:
print("Geçersiz bir sayı girdiniz!")
except ZeroDivisionError:
print("Sıfıra bölme hatası!")
Özet:
- Python'da birçok hata türü vardır ve bunlar çeşitli durumlarda ortaya çıkar.
- SyntaxError, yazım hatalarından kaynaklanırken; TypeError, ValueError, NameError gibi hatalar programın çalışması sırasında ortaya çıkar.
- Hata yönetimi, bu hataların programı durdurmasını engelleyerek kullanıcılara uygun geri bildirim sağlamaya yardımcı olur.