Sobes.tech
Junior

Python'da istisna işleme özellikleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Python'daki istisnalar, programın normal akışını bozan olaylardır. Hataları temsil eden nesnelerdir.

Özellikler:

  • İstisna hiyerarşisi: Tüm yerleşik istisnalar sınıflardır ve BaseException temel sınıfından türeyen bir hiyerarşi içinde organize edilmiştir.
    # Hiyerarşi örneği
    # BaseException -> Exception -> StandardError -> ...
    #                  Exception -> ArithmeticError -> ZeroDivisionError
    
  • try...except... blokları: İstisna işlemenin ana mekanizmasıdır.
    try:
        # İstisna oluşturabilecek kod
        result = 10 / 0
    except ZeroDivisionError:
        # Belirli bir istisna için işlem
        print("Sıfıra bölme!")
    except Exception as e:
        # Diğer istisnalar için işlem
        print(f"Bir hata oluştu: {e}")
    
  • Çoklu except blokları: Farklı istisna türlerini farklı şekilde işlemek için kullanılır.
    try:
        # Kod
        value = int("abc")
    except ValueError:
        print("Geçersiz sayı formatı.")
    except TypeError:
        print("Geçersiz veri tipi.")
    
  • else bloğu: try bloğu hata olmadan tamamlanırsa çalışır.
    try:
        # Kod
        result = 10 / 2
    except ZeroDivisionError:
        print("Sıfıra bölme!")
    else:
        print("İşlem başarıyla tamamlandı.")
    
  • finally bloğu: Her zaman çalışır, hata olup olmamasına bakılmaksızın. Kaynakları serbest bırakmak için kullanılır.
    file = None
    try:
        file = open("myfile.txt", "r")
        # Dosyadan okuma
    except FileNotFoundError:
        print("Dosya bulunamadı.")
    finally:
        if file:
            file.close() # Dosyanın garantili kapanması
    
  • raise operatörü: Açıkça istisna fırlatmak için kullanılır.
    def divide(a, b):
        if b == 0:
            raise ZeroDivisionError("Sıfıra bölme yapılamaz")
        return a / b
    
    try:
        divide(10, 0)
    except ZeroDivisionError as e:
        print(f"Hata: {e}")
    
  • Kullanıcı tanımlı istisnalar: Kendi istisna sınıflarınızı Exception veya başka bir mevcut istisna sınıfından türeterek oluşturabilirsiniz.
    class CustomError(Exception):
        pass
    
    def process_data(data):
        if not data:
            raise CustomError("Veriler boş")
    
    try:
        process_data([])
    except CustomError as e:
        print(f"Hata: {e}")
    
  • with bağlam yöneticisi kullanarak istisna işleme: Kaynaklar üzerinde çalışmayı kolaylaştırır, özellikle dosyalar gibi, açık kapatma gerektiren kaynaklar.
    try:
        with open("myfile.txt", "r") as file:
            # Dosyayla çalışma
            content = file.read()
    except FileNotFoundError:
        print("Dosya bulunamadı.")
    # Dosya, `with` bloğundan çıkarken otomatik olarak kapanır
    
  • İstisnaların zincirlenmesi: Bir istisna işlenirken, önceki istisna hakkında bilgi saklanabilir (örtük veya raise Exception from another_exception kullanılarak).

Bu özellikler, Python'da hata yönetimi için esnek ve güçlü bir mekanizma sağlar, daha güvenilir ve hata toleranslı programlar oluşturmayı mümkün kılar.