"try: value = int('abc')...." Yukarıdaki Python kodu çalıştırıldığında, hangi mesaj ekrana yazdırılır?

image (5)

try:
    value = int('abc')
except ValueError as ve:
    print(f"Değer hatası: {ve}")
except Exception as e:
    print(f"Genel hata: {e}")
else:
    print("Hata yok")
finally:
    print("Tamamlandı")

Yukarıdaki Python kodu çalıştırıldığında, hangi mesaj ekrana yazdırılır?


Resimde bir Python hata denetim ve işleme (exception handling) örneği verilmiştir. Kod bloğu çalıştırıldığında hangi mesajın ekrana yazdırılacağı sorulmaktadır.

Kod Analizi ve Çıktı

Hata Tiplerinin Anlamı

Python’da hata yönetimi için kullanılan try-except bloklarında gelen hataların tiplerine göre farklı tepkiler verebiliriz. Yukarıdaki Python kodunda bu durum şu şekilde ele alınmış:

  1. Bir ‘ValueError’ Hatası Olursa: Bu hata tipi özellikle yanlış veri tiplerinin kullanıldığı durumlarda meydana gelir.
  2. Diğer Tüm Hatalar İçin Genel Bir ‘Exception’ Bloku: Bu blok, tüm diğer hataları yakalamak için kullanılır.
  3. Hata Yoksa: Bu durumda ‘else’ bloğu çalışır.
  4. Her Durumda Çalışan ‘finally’ Bloku: Bu blok, try-except sonrasında daima çalışır, hata olsun veya olmasın.

Kodun Çalışma Adımları

Şimdi kodun satır satır ne yaptığını analiz edelim:

try:
    value = int('abc')
  • Bu satırda, ‘abc’ adlı karakter dizisinin bir tamsayıya (int) dönüştürülmesi deneniyor. Ancak bu karakter dizisi bir tamsayıya dönüşemeyeceği için bir ValueError hatası atılacak.
except ValueError as ve:
    print(f"Değer hatası: {ve}")
  • Burada, yukarıdaki satırda meydana gelen ValueError hatası yakalanacak ve bu hata için tanımlanmış olan mesaj “Değer hatası: invalid literal for int() with base 10: ‘abc’” ekrana yazdırılacak.
except Exception as e:
    print(f"Genel hata: {e}")
  • Bu blok çalışmayacak çünkü spesifik bir ValueError yakalanmış durumda, ve önceki ‘{valueerror}’ except bloğu bunu halledecek.
else:
    print("Hata yok")
  • Bu blok, eğer try bloğunda bir hata meydana gelmezse çalışırdı. Ancak bir hata olduğu için, bu satır çalışmayacak.
finally:
    print("Tamamlandı")
  • Bu blok, her durumda çalışır. Bu nedenle, ekrana “Tamamlandı” yazdırılacak.

Çıktı

Kodu çalıştırdığınızda ekrana yazdırılacak mesajlar şu şekilde olacaktır:

  1. Değer hatası: invalid literal for int() with base 10: ‘abc’
  2. Tamamlandı

Dolayısıyla, aşağıdaki mesajlar ekrana yazdırılacaktır:

Değer hatası: invalid literal for int() with base 10: 'abc'
Tamamlandı

TERİMLER:

ValueError: Python’da hatalı bir tür dönüşümü ya da yanlış bir değerin kullanıldığı yerlerde, örneğin bir karakter dizisinin sayıya çevrilemediği durumlarda ortaya çıkan hata tipidir.