Aşağıda, Python'da hata yönetimi (exception handling) kullanarak basit bir uygulama örneği bulacaksınız. Bu uygulama, kullanıcıdan iki sayı girmesini isteyip bu sayıları bölerken, olası hataları yakalayan bir program olacaktır. Bu sayede Python’daki hata yönetiminin nasıl uygulandığını görebilirsiniz.
Problem Tanımı:
- Kullanıcıdan iki sayı girmesi istenecek.
- İlk sayı, ikinci sayıya bölünecek.
- Eğer kullanıcı sayısal olmayan bir değer girerse, bir hata mesajı gösterilecek.
- Eğer kullanıcı ikinci sayı olarak sıfır girerse, sıfıra bölme hatası yakalanacak.
- Hatalar yakalanırken programın çökmesi önlenecek ve uygun mesajlar gösterilecek.
- Her durumda işlem tamamlandığında bir mesaj gösterilecek.
Python Kodu:
def sayi_bolme():
try:
# Kullanıcıdan iki sayı girişi alıyoruz
sayi1 = float(input("Bölünecek sayıyı girin: "))
sayi2 = float(input("Bölen sayıyı girin: "))
# Sayıları bölme işlemi
sonuc = sayi1 / sayi2
except ValueError:
# Sayısal olmayan bir değer girildiğinde hata mesajı
print("Geçersiz giriş! Lütfen sadece sayısal değerler girin.")
except ZeroDivisionError:
# Bölme işlemi sırasında sıfıra bölme hatası
print("Hata! Bir sayı sıfıra bölünemez.")
else:
# Eğer bir hata olmazsa sonuç ekrana yazdırılır
print(f"Sonuç: {sonuc}")
finally:
# Her durumda bu mesaj yazdırılır
print("İşlem tamamlandı.")
# Programın çalıştırılması
sayi_bolme()
Adım Adım Açıklama:
-
try Bloğu:
- Kullanıcıdan iki sayı alıyoruz (
input
ile). Giriş verilerinifloat
kullanarak sayısal değerlere dönüştürüyoruz. Bu işlem sırasında hata oluşabilecek durumları yakalamak içintry
bloğunu kullanıyoruz. - Kullanıcıdan alınan sayılar başarılı bir şekilde sayıya dönüştürülürse bölme işlemi yapılır.
- Kullanıcıdan iki sayı alıyoruz (
-
except ValueError:
- Kullanıcı, sayısal olmayan bir veri girdiğinde, örneğin harf ya da özel karakter gibi, Python bu hatayı
ValueError
olarak yakalar. Bu durumda kullanıcıya "Geçersiz giriş" uyarısı gösterilir.
- Kullanıcı, sayısal olmayan bir veri girdiğinde, örneğin harf ya da özel karakter gibi, Python bu hatayı
-
except ZeroDivisionError:
- Kullanıcı bölen sayıyı sıfır olarak girerse, bölme işlemi sırasında
ZeroDivisionError
hatası oluşur. Bu durumda sıfıra bölme hatası kullanıcıya bildirilir.
- Kullanıcı bölen sayıyı sıfır olarak girerse, bölme işlemi sırasında
-
else Bloğu:
- Eğer
try
bloğundaki kodda hiçbir hata oluşmazsa,else
bloğu çalışır ve bölme işleminin sonucu ekrana yazdırılır.
- Eğer
-
finally Bloğu:
- Hata oluşup oluşmadığına bakılmaksızın her zaman
finally
bloğu çalışır. Bu blok, genellikle kaynakları temizlemek veya işlem tamamlandığında kullanıcıya bir bildirim yapmak için kullanılır. Bu örnekte "İşlem tamamlandı" mesajını gösteriyoruz.
- Hata oluşup oluşmadığına bakılmaksızın her zaman
Örnek Çıktılar:
1. Sayısal Olmayan Değer Girilirse:
Bölünecek sayıyı girin: abc Geçersiz giriş! Lütfen sadece sayısal değerler girin. İşlem tamamlandı.
2. Sıfıra Bölme Durumu:
Bölünecek sayıyı girin: 10 Bölen sayıyı girin: 0 Hata! Bir sayı sıfıra bölünemez. İşlem tamamlandı.
3. Hatasız Bir Giriş:
Bölünecek sayıyı girin: 10 Bölen sayıyı girin: 2 Sonuç: 5.0 İşlem tamamlandı.
Uygulama Özeti:
Bu örnek uygulamada, Python'da hata yönetimi nasıl yapılır sorusuna dair temel bir anlayış kazanmış olduk. Kullanıcıdan alınan verilerde olası hataları (sayısal olmayan giriş ve sıfıra bölme) yakalayıp, kullanıcıya açıklayıcı hata mesajları gösterdik. try
, except
, else
ve finally
bloklarının nasıl birlikte çalıştığını bu uygulama sayesinde öğrenmiş olduk.