Python programlama dilinde hata (exception) yakalama, kodun beklenmedik durumlarda çökmesini engellemek için kullanılan bir yöntemdir. Bu sistem sayesinde program çalışırken oluşabilecek hatalar “yakalanır” ve uygun şekilde yönetilir.
Neden Hata Yakalama?
Bir program kullanıcıdan veri alabilir, dosya okuyabilir veya ağ üzerinden işlem yapabilir. Bu tür durumlar sırasında hata oluşabilir:
- Kullanıcı sayısal değer yerine harf girerse,
- Okunmaya çalışılan dosya yoksa,
- Bir sayı sıfıra bölünmeye çalışılırsa,
Bu gibi durumlarda program doğrudan çöker. Ancak try-except
yapısı kullanılarak bu tür hatalar “yakalanabilir” ve program güvenli şekilde devam ettirilebilir.
Try-Except Temel Kullanımı
try:
# Hata çıkabilecek kod buraya yazılır
sayi = int(input("Bir sayı girin: "))
sonuc = 10 / sayi
print("Sonuç:", sonuc)
except:
# Hata oluştuğunda burası çalışır
print("Bir hata oluştu!")
Açıklama:
try
bloğundaki kodda hata çıkmazsaexcept
bloğu çalışmaz.- Ancak hata çıkarsa,
except
bloğu devreye girer.
Belirli Hataları Yakalama
Python’da her hata türü için özel bir exception sınıfı vardır. Bunları belirterek sadece belli türdeki hataları yakalayabilirsiniz:
try:
sayi = int(input("Bir sayı girin: "))
sonuc = 10 / sayi
except ZeroDivisionError:
print("Sıfıra bölme hatası!")
except ValueError:
print("Geçersiz giriş! Lütfen sayı girin.")
Tüm Hataları Görmek (Hata mesajını yazdırmak)
try:
dosya = open("olmayan_dosya.txt")
except Exception as e:
print("Bir hata oluştu:", e)
Burada Exception as e
ifadesi sayesinde hata mesajı detaylı şekilde yazdırılır.
Else ve Finally Blokları
else
bloğu, try
bloğunda hiçbir hata oluşmadığında çalışır.
finally
bloğu ise hata olsa da olmasa da her durumda çalışır.
try:
sayi = int(input("Bir sayı girin: "))
except ValueError:
print("Geçersiz sayı girdiniz.")
else:
print("Girdiğiniz sayı:", sayi)
finally:
print("İşlem tamamlandı.")
Kendi Hatalarını Fırlatmak (raise)
Programcı kendi özel durumlarında hata fırlatabilir:
def pozitif_sayi(sayi):
if sayi < 0:
raise ValueError("Negatif sayı girilemez!")
return sayi
try:
pozitif_sayi(-5)
except ValueError as hata:
print("Hata mesajı:", hata)
Özet:
try
bloğu içinde hata çıkabilecek kodlar yazılır.except
ile hatalar kontrol altına alınır.else
bloğu sadece hata olmadığında çalışır.finally
bloğu her durumda çalışır.raise
ile özel hata fırlatılabilir.
Bu yapı sayesinde programlar daha sağlam, kullanıcı dostu ve kontrol edilebilir olur.