6- Hata İşleme ve İstisnalar

Python Hata Yönetimi ve Özel Hata Sınıfları

1. Hata Yönetimi

Python'da hata yönetimi, try, except, ve finally blokları kullanılarak gerçekleştirilir. Bu yapılar, hata oluşumunda programın nasıl davranacağını kontrol etmenizi sağlar.

try Bloku

Potansiyel olarak hata oluşturabilecek kodları içeren bloktur. Hata oluştuğunda, bu blokta bir except bloğu varsa, program bu bloğa geçer.

python
try:
    result = 10 / 0
except ZeroDivisionError:
    print("Sıfıra bölme hatası!")

except Bloku

Hata oluştuğunda, try bloğunda yakalanan hata türüne göre bu blok çalışır. Birden fazla except bloğu tanımlanabilir ve farklı hata türlerini işleyebilir.

python
try:
    result = int("not a number")
except ValueError:
    print("Geçersiz değer hatası!")
except ZeroDivisionError:
    print("Sıfıra bölme hatası!")

finally Bloku

Hata oluşsa da oluşmasa da, try bloğu tamamlandıktan sonra bu blok çalışır. Genellikle kaynakları serbest bırakmak veya temizlik işlemleri için kullanılır.

python
try:
    file = open("example.txt", "r")
    content = file.read()
finally:
    file.close()
    print("Dosya kapatıldı.")

2. Özel Hata Sınıfları ve Hata Mesajları

Python'da kendi hata sınıflarınızı oluşturabilir ve özel hata mesajları tanımlayabilirsiniz. Bu, hata yönetimini daha özelleştirilmiş ve anlaşılır hale getirebilir.

Özel Hata Sınıfı Tanımlama

Özel bir hata sınıfı oluşturmak için, Exception sınıfını miras alarak yeni bir sınıf tanımlayabilirsiniz.

python
class CustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(self.message)

Özel Hata Sınıfını Kullanma

Özel hata sınıfını raise anahtar kelimesi ile yükseltebilir ve try ve except bloklarında yakalayabilirsiniz.

python
try:
    raise CustomError("Bu özel bir hata mesajıdır.")
except CustomError as e:
    print(f"Özel hata yakalandı: {e}")