Python'da İstisnalar Nasıl Ele Alınır (Dene-Hariç-Nihayet)

Python'da try, hariç, else ve nihayet bloklarını kullanarak istisnaları nasıl ele alacağınızı öğrenin. Hatasız ve çökmeye dayanıklı Python kodu yazın.

Bu Çözümü Editör'de deneyin

Genel Bakış

Eksik dosyalar, geçersiz kullanıcı girişleri, veritabanı arızaları veya ağ kesintileri gibi beklenmedik durumlarla baş edebilecek sağlam bir yazılım hazırlanmalıdır. Python'da bir hata oluştuğunda bu bir istisna oluşturur. İstisnalar işlenmeden bırakılırsa programınızı anında durdurur ve bir geri izleme yığını yazdırır.

Python'un çalışma zamanı hatalarını yönetmek için kullandığı birincil araç "try-hariç" bloğudur. Hata oluşturabilecek kodu 'try' bloğunun içine yerleştirirsiniz ve hata işleme kodunu bir veya daha fazla 'hariç' bloğunun içine tanımlarsınız. İstisna sınıfının tam olarak belirtilmesi ("ValueError" veya "ZeroDivisionError" gibi) önemle tavsiye edilir, çünkü genel istisnaların ('hariç:') yakalanması hataları maskeleyebilir.

İstisna akışınızı daha anlamlı hale getirmek için Python iki ek blok sağlar: "else" ve "finally". 'Else' bloğu yalnızca 'try' bloğunda hiçbir istisna oluşturulmadığında yürütülür; bu, yalnızca başarı durumunda çalışması gereken kod için kullanışlıdır. 'Nihayet' bloğu, bir istisnanın oluşup oluşmadığına bakılmaksızın *her zaman* çalıştırır, bu da onu dosyaları veya veritabanı bağlantılarını kapatmak gibi temizlik işlemleri için mükemmel bir yer haline getirir.

Kod ve Yürütme Çıkışı

Bu betik, Python'da try, hariç, else ve son olarak kullanılarak güçlü hata işlemeyi gösterir.

handle_errors.py
Editör'de deneyin
def divide_numbers(a, b):
    try:
        # Code that might raise an exception
        result = a / b
    except ZeroDivisionError:
        # Handling a specific exception
        print("Error: Cannot divide by zero!")
    except TypeError:
        # Handling another exception type
        print("Error: Inputs must be numbers!")
    else:
        # Run only if try block succeeded
        print(f"Success! Result of {a}/{b} is {result}")
    finally:
        # Runs no matter what
        print("Division attempt completed.")

divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)
Terminal Çıkışı
Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.

Adım Adım Uygulama

  • Başarısız olabilecek kodu try bloğunun içine yerleştirin.
  • Hataları sorunsuz bir şekilde ele almak için ExceptionType: blokları ile belirli hata türlerini yakalayın.
  • Yalnızca başarılı try bloklarında yürütülmesi gereken kod için else kullanın.
  • Temizleme eylemlerinin hatalardan bağımsız olarak çalışmasını garanti etmek için nihayet kullanın.

Sıkça Sorulan Sorular

Tek bir hariç blokta birden fazla istisna yakalayabilir miyim?

Evet, bunları bir demet olarak iletebilirsiniz: hariç (ValueError, TypeError) e: olarak.

Kendi istisnalarımı nasıl ortaya çıkarabilirim?

Raise anahtar sözcüğünü ve ardından istisna örneğini kullanın: Raise ValueError("Geçersiz yapılandırma değeri").

İlgili Konular

Önerilen Python Kaynakları

İlgili etkileşimli eğitimler, yardımcı sayfalar ve kod karşılaştırmalarıyla bilginizi genişletin.