Menu
Coddy logo textTech

Birden Fazla İstisnayı Yönetme

Coddy'nin Python Journey'sinin Logic & Flow bölümünün bir parçası — ders 65 / 78.

Python'da, farklı türdeki istisnaları ayrı except bloklarında ele alabiliriz. Bu, meydana gelen belirli hataya bağlı olarak farklı şekilde yanıt vermemizi sağlar.

Temel bir try-except yapısıyla başlayın:

try:
    # İstisna fırlatabilecek kod
    pass
except Exception as e:
    # Herhangi bir istisnayı ele al
    pass

Birden fazla istisnayı ele almak için belirli except blokları ekleyin:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Ayrıca tek bir except bloğunda birden fazla istisna türünü yakalayabilirsiniz:

try:
    # Bazı kodlar
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

except bloklarının sırası önemlidir - her zaman daha spesifik istisnaları daha genel olanlardan önce yerleştirin.

challenge icon

Görev

Kolay

Aşağıdaki işlemleri gerçekleştiren process_data adında bir fonksiyon oluşturun:

  1. Potansiyel veriyi temsil eden bir dize (string) girdisi alır
  2. Bunu bir tam sayıya (integer) dönüştürmeye çalışır, ardından 100'ü bu tam sayıya böler
  3. Sonucu döndürür
  4. En az 3 olası istisnayı (exception) ele alır: 
    • Girdi bir tam sayıya dönüştürülemiyorsa ValueError ("Input must be a number!" yazdırın)
    • Girdi 0 ise ZeroDivisionError ("Cannot divide by zero!" yazdırın)
    • Genel bir işleyici ile diğer tüm istisnalar ("An unexpected error occurred!" yazdırın)

Kopya kağıdı

Birden fazla except bloğu kullanarak farklı istisna türlerini yönetin:

try:
    number = int(input("Enter a number: "))
    result = 10 / number
    print(result)
except ValueError:
    print("That's not a valid number!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

Tek bir except bloğunda birden fazla istisna türünü yakalayın:

try:
    # Bazı kodlar
    pass
except (ValueError, TypeError):
    print("Invalid input type!")

except bloklarının sıralamasında her zaman daha spesifik istisnaları daha genel olanlardan önce yerleştirin.

Kendin dene

def process_data(input_string):
    try:
        # Giriş dizesini bir tam sayıya dönüştürmeyi dene
        
        # 100'ü giriş değerine bölerek hesapla
        
        # Sonucu döndür
        
    except ValueError:
        # Girişin bir tam sayıya dönüştürülemediği durumu ele al
        
    except ZeroDivisionError:
        # Girişin sıfır olduğu durumu ele al
        
    except:
        # Diğer tüm beklenmedik istisnaları ele al
        
    return None
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Logic & Flow bölümündeki tüm dersler