AMP Analytics -->

Teknoloji Rehberi

12 Mayıs 2025 Pazartesi

Python'da Exception Handling (Hata Yönetimi)

 

Python'da Exception Handling (Hata Yönetimi)

Exception handling, program çalışırken oluşabilecek hataları yönetmek için kullanılan bir mekanizmadır. Python'da tryexceptelsefinally ve raise anahtar kelimeleri kullanılarak uygulanır.

Temel Yapı

python
Copy
Download
try:
    # Hata oluşturabilecek kodlar
    result = 10 / 0
except ZeroDivisionError:
    # Belirli bir hata türü için işlem
    print("Sıfıra bölme hatası oluştu!")
except Exception as e:
    # Diğer tüm hatalar için genel işlem
    print(f"Beklenmeyen bir hata oluştu: {e}")
else:
    # Hata oluşmazsa çalışacak kod
    print("İşlem başarıyla tamamlandı")
finally:
    # Hata olsun veya olmasın her zaman çalışacak kod
    print("Bu her zaman çalışır")

Exception Türleri

Python'da birçok built-in (yerleşik) exception türü vardır:

  • BaseException: Tüm exceptionların temel sınıfı

  • Exception: Tüm built-in, non-system-exiting exceptionlar için temel sınıf

  • ArithmeticError: Aritmetik işlem hataları için temel sınıf

    • ZeroDivisionError: Sıfıra bölme hatası

    • OverflowError: Çok büyük sayı hatası

  • LookupError: Geçersiz key veya index hataları

    • IndexError: Liste index hatası

    • KeyError: Sözlük key hatası

  • IOError: Giriş/çıkış işlem hataları

  • TypeError: Yanlış tip işlemleri

  • ValueError: Yanlış değer işlemleri

  • NameError: Tanımlanmamış değişken kullanımı

  • AttributeError: Geçersiz attribute erişimi

  • SyntaxError: Syntax hatası

  • IndentationError: Girinti hatası

Örnekler

Temel Kullanım

python
Copy
Download
try:
    num = int(input("Bir sayı girin: "))
    print(10 / num)
except ValueError:
    print("Geçersiz sayı formatı!")
except ZeroDivisionError:
    print("Sıfıra bölme hatası!")

Birden Fazla Hata Yakalama

python
Copy
Download
try:
    # Kod burada
    pass
except (TypeError, ValueError) as e:
    print(f"Tip veya değer hatası: {e}")

Exception Hiyerarşisi

python
Copy
Download
try:
    # Kod burada
    pass
except ArithmeticError:
    print("Aritmetik hata")
except ZeroDivisionError:
    print("Bu kısım asla çalışmaz çünkü ZeroDivisionError ArithmeticError'un alt sınıfıdır")

Else Kullanımı

python
Copy
Download
try:
    num = int(input("Bir sayı girin: "))
except ValueError:
    print("Geçersiz giriş!")
else:
    print(f"Girdiğiniz sayı: {num}")

Finally Kullanımı

python
Copy
Download
try:
    file = open("dosya.txt", "r")
    content = file.read()
except IOError:
    print("Dosya okuma hatası!")
finally:
    file.close()  # Dosya her durumda kapatılır
    print("Dosya kapatıldı")

Özel Exception Oluşturma

python
Copy
Download
class MyCustomError(Exception):
    def __init__(self, message):
        self.message = message
        super().__init__(message)

try:
    raise MyCustomError("Bu özel bir hata!")
except MyCustomError as e:
    print(f"Özel hata yakalandı: {e.message}")

Exception Zincirleme

python
Copy
Download
try:
    try:
        raise ValueError("İç hata")
    except ValueError as ve:
        raise RuntimeError("Dış hata") from ve
except RuntimeError as re:
    print(f"Yakalanan hata: {re}")
    print(f"Sebep olan hata: {re.__cause__}")

En İyi Uygulamalar

  1. Spesifik hataları yakalayın: Genel Exception yerine belirli hata türlerini yakalayın.

  2. Hata mesajlarını kaydedin: Hata ayıklama için hata mesajlarını loglayın.

  3. Gereksiz try-except kullanmayın: Sadece hata oluşabilecek kodları try bloğuna alın.

  4. Kaynakları temizleyin: finally bloğunu dosya, ağ bağlantısı gibi kaynakları serbest bırakmak için kullanın.

  5. Özel hata sınıfları oluşturun: Uygulamanıza özgü hata durumları için özel exception sınıfları tanımlayın.

Exception handling, Python'da sağlam ve hataya dayanıklı uygulamalar geliştirmek için kritik bir araçtır. Doğru kullanıldığında programlarınızın beklenmeyen durumlarda daha kontrollü davranmasını sağlar.

Hiç yorum yok:

Yorum Gönder

Popular Posts