Python Tutorials

Python’da Hata Yönetimi Ustası Olmak

Spread the love

Hata yönetimi, sağlam Python programlamanın kritik bir bileşenidir. Program yürütülmesi sırasında ortaya çıkabilecek hataları zarif bir şekilde yönetmenizi, çökmeleri önlemenizi ve kullanıcılara bilgilendirici geri bildirim sağlamanızı sağlar. Bu öğretici, Python’da hata yönetiminin temel kavramlarını ele almaktadır.

İçerik Tablosu

  1. try…except
  2. raise Exception
  3. try…finally
  4. Yaygın Yerleşik Hatalar
  5. Özel Hatalar Oluşturma

1. try…except

try...except bloğu, hata yönetiminin temelini oluşturur. Bir hata oluşturabilecek kod, try bloğunun içine yerleştirilir. Bir hata oluşursa, ilgili except bloğu yürütülür.


try:
    result = 10 / 0  # Bu bir ZeroDivisionError hatasına neden olacaktır
except ZeroDivisionError:
    print("Hata: Sıfıra bölme!")
except TypeError:
    print("Hata: Tip uyuşmazlığı")
except Exception as e:  # Diğer tüm hataları yakalar
    print(f"Beklenmedik bir hata oluştu: {e}")
else:  # İsteğe bağlı else bloğu, hata oluşmazsa yürütülür
    print(f"Sonuç: {result}")
finally:  # İsteğe bağlı finally bloğu, her zaman yürütülür
    print("Bu her zaman yürütülür.")

Bu örnek, bir ZeroDivisionError hatasının nasıl ele alındığını göstermektedir. Birden fazla except bloğu farklı hata türlerini ele alabilir. İsteğe bağlı else bloğu, yalnızca try bloğunda hata oluşmazsa yürütülür. İsteğe bağlı finally bloğu ise her zaman yürütülür ve dosya kapatma gibi temizleme görevleri için idealdir.

2. raise Exception

raise ifadesi, hataları veya istisnai durumları bildiren hataları açıkça oluşturmanıza olanak tanır.


def validate_age(age):
    if age < 0:
        raise ValueError("Yaş negatif olamaz")
    elif age > 120:
        raise ValueError("Yaş gerçekçi değil")
    return age

try:
    age = validate_age(-5)
    print(f"Geçerli yaş: {age}")
except ValueError as e:
    print(f"Hata: {e}")

Burada, validate_age, yaş geçersizse bir ValueError oluşturur. Herhangi bir yerleşik hatayı oluşturabilir veya özel olanları (Exception‘dan türeyen sınıflar) oluşturabilirsiniz.

3. try…finally

finally bloğu, içindeki kodun hatalardan bağımsız olarak her zaman yürütülmesini sağlar. Temizlik için çok önemlidir.


file = None
try:
    file = open("my_file.txt", "r")
    content = file.read()
    print(content)
except FileNotFoundError:
    print("Dosya bulunamadı!")
finally:
    if file:
        file.close()
    print("Dosya kapandı.")

Bu, bir FileNotFoundError oluşsa bile dosyanın kapatılmasını garanti eder ve kaynak sızıntılarını önler.

4. Yaygın Yerleşik Hatalar

Python, çok sayıda yerleşik hata sunar:

  • ZeroDivisionError: Sıfıra bölme.
  • TypeError: Bir işlem için uygunsuz tip.
  • ValueError: Doğru tip, uygunsuz değer.
  • FileNotFoundError: Dosya bulunamadı.
  • IndexError: Aralık dışı indeks.
  • KeyError: Bir sözlükte anahtar bulunamadı.
  • ImportError: İçe aktarma hatası.
  • NameError: Ad bulunamadı.

5. Özel Hatalar Oluşturma

Daha özel hata yönetimi için, Exception sınıfından türeterek özel hatalar oluşturun:


class InvalidInputError(Exception):
    pass

def process_data(data):
    if not data:
        raise InvalidInputError("Veri boş olamaz")
    # ...veri işlemenin geri kalanı...

try:
    process_data("")
except InvalidInputError as e:
    print(f"Özel Hata: {e}")

Bu, daha ayrıntılı hata yönetimi ve iyileştirilmiş kod okunabilirliği sağlar.

Etkin hata yönetimi, sağlam ve güvenilir Python programları yazmak için çok önemlidir. Potansiyel hataları öngörerek ve zarif bir şekilde ele alarak, daha dirençli ve kullanıcı dostu uygulamalar oluşturursunuz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir