Python Hata Yönetimi: try, except, finally, raise

Programı yazarken her zaman her şey yolunda gitmez. Kullanıcı yanlış veri girerse, dosya bulunamazsa veya sıfıra bölme yapılırsa program çöker. Hata yönetimi, bu sorunları kontrol altında tutmanızı sağlar.

try bloğu içine riskli kodu yazarsınız. Eğer hata çıkarsa, except bloğu devreye girer ve hatayı ele alırsınız. Böylece program çökmez, aksine sorunun üstesinden gelir.

1try:
2sayi = int(input("Bir sayı girin: "))
3sonuc = 10 / sayi
4print(f"Sonuç: {sonuc}")
5except ValueError:
6print("Hata: Lütfen geçerli bir sayı girin.")
7except ZeroDivisionError:
8print("Hata: Sıfıra bölme yapılamaz.")

Çıktı (kullanıcı "abc" girerse):
```
Hata: Lütfen geçerli bir sayı girin.
```

Farklı hata türlerine farklı except blokları yazabilirsiniz. ValueError metin girildiğinde, ZeroDivisionError sıfıra bölünmeye yakalanır.

finally bloğu, hata olsa da olmasa da mutlaka çalışır. Dosya kapatmak, bağlantıyı kesmek gibi temizlik işlemleri için kullanılır.

1try:
2dosya = open("veri.txt", "r")
3icerik = dosya.read()
4print(icerik)
5except FileNotFoundError:
6print("Dosya bulunamadı.")
7finally:
8if 'dosya' in locals():
9dosya.close()
10print("İşlem tamamlandı.")

Bazen siz de hata fırlatmak isteyebilirsiniz. Örneğin yaşı kontrol eden bir fonksiyonda, yaş negatifse hata vermek.

1def yas_kontrol(yas):
2if yas < 0:
3raise ValueError("Yaş negatif olamaz!")
4elif yas < 18:
5print("Reşit değilsiniz.")
6else:
7print("Reşitsiniz.")
8
9try:
10yas_kontrol(-5)
11except ValueError as hata:
12print(f"Yakalandı: {hata}")

Çıktı:
```
Yakalandı: Yaş negatif olamaz!
```

Her zaman spesifik hata türlerini yakalayın. Genel Exception kullanmak hataları gizleyebilir. finally ile kaynakları temizleyin. raise ile kendi kurallarınızı uygulayın.

konu hakkında tepkinizi verebilirsiniz