Hava işleme, bir hata olsa bile komut dosyasının çalışmaya devam etmesine izin vermemizi sağlar.
Python ile hata işlemeyi nasıl yapabileceğimizi göstermek için bir örnek deneyelim.
Diyelim ki bir kullanıcının girdisini almamızı sağlayan bir program oluşturmak istedik.
Diyelim ki kullanıcıdan bir H istiyoruz, bu yüzden giriş istemini kullanıyoruz ve şöyle diyoruz: H'niz nedir?
Ve burada yapacağımız tek şey H harfini yazdırmak.
Güzel ve basit bir program.
Eğer bunu çalıştırırsam.
Ve diyelim ki 10 yazıyorum.
Al bakalım.
Her şey çalışıyor.
Peki ya bir sayı girmezsem ve şöyle yaparsam?
Bu hala işe yarıyor.
Ama programımla yapmak istediğim şey bu muydu?
Belki yaşı girip oyunu kapalı oynayıp oynayamayacaklarını, 18 yaş ve üstü olup olmadıklarını hesaplamak
istedim.
Bunu nasıl düzeltebiliriz?
Yapabileceğimiz tek şey bunu bir int içine sarmak, değil mi?
Böylece kullanıcı bize ne verirse onu bir tamsayıya dönüştürüyoruz, böylece bunu çalıştırırsam.
Ve bunu yazıyorum.
Bir değer hatası alıyorum int için geçersiz değişmez.
Din değiştirmeye çalışıyorum.
Bu bir tamsayıya dönüştürülür, ancak bana bunun bir hata olduğunu söylüyor.
Bunu yapamam.
Peki Python'da hata işleme ile bunu nasıl düzeltebiliriz?
Bu şekilde yapabiliriz.
Üç çemberimiz var, tri anahtar kelimemiz var, Hey, bu kod parçasını denemenizi istiyorum ve girintilendirdiğimizden
emin olmalıyız.
Bu kod parçasını deneyelim.
Şimdi kabile bloğunun içinde olan her şey.
Başa çıkabilirim.
İşlemin nereden geldiğini görün.
AYRES Anahtar kelime hariç.
Ve hariç.
Hey, diyor.
Burada, üç blokta ne olursa olsun, herhangi bir şey yayınlanırsa, bir şey söylemenizi istiyorum.
Yani programdan çıkan bu kırmızı havaya sahip olmak yerine başka bir şey yapın.
Bunu yap.
O yüzden şöyle diyeceğim.
Yazdır.
Lütfen bir numara girin.
Bakalım şimdi ne olacak.
Çalıştır'a tıklarsam.
Benim yaşım kaç?
Saçma sapan şeyler yazacağım.
Şuna bak.
Lütfen bir numara girin.
Burada hatalarımı tüm kodumu bir try bloğuna sararak ele alıyorum, böylece sadece kopyala yapıştır yapabilirdim,
tüm dosyamı buraya ekleyebilirdim, bir try bloğunun içine koyabilirdim Ve olacak olan şey, programım
çökmeden önce programımın yayınlanması yerine, bu kodu çalıştıracak ve sonra diyecek
ki, hey, eğer bu blok içinde bir şey olursa, onu burada kabul bloğu ile yakalayacağız ve duyabiliyorum.
Ne istersem yaparım.
Benim durumumda, "Hey, lütfen numaramızı girin" diyebilirim.
Ama burada bir sorunumuz var, değil mi?
Program yeni sona erdi ve biz bunun devam etmesini istiyoruz.
Tekrar çalıştır'a tıklamam ve H'yi bir kez daha istemem gerekiyor.
Peki, kullanıcı gerçekten geçerli bir şey girene kadar bunu çalıştırmaya devam ettiğimizden nasıl emin olabiliriz?
Bunu daha önce de gördük.
Bir while döngüsü yapabilir ve while true diyebiliriz.
Ron bu.
Ve eğer bu işe yararsa.
Peki, umarım h'yi alacağız, diyelim ki H'm nedir çalıştır'a tıklarsam bunu görelim.
Hayır.
Lütfen numaranızı girin.
Yaşınız kaç?
Tekrar kırmayı deneyelim.
Lütfen bir numara girin.
Pekala, tamam.
Benim yaşım on.
Al bakalım.
On ismini anladım, ama.
Hâlâ yaşımı mı soruyor?
İdeal olarak, bu doğru ifadenin dışına çıkmak istiyorum.
Doğru.
Peki bunu nasıl yapabilirim?
Burada daha önce gördüğümüz else bloğu dediğimiz şeyi kullanabilirim.
Ancak bu, try except bloğu ile çalışır.
Sonuna koyuyoruz, "Hey, bunu dene" diyor.
Bir hata varsa, bunu yapın.
Ancak, başka bir hata yoksa bunu yapın.
Yani bizim durumumuzda, sadece mola diyebiliriz.
Ve ne var biliyor musun?
Baskı bile yapabiliriz.
Teşekkür ederim.
Kibarlık olsun diye söylüyorum, eğer bunu durdurup tekrar koşarsam ve onlara yaşımı söylersem.
Al bakalım.
İşimiz bitti.
Döngüden çıktık ve her şey yolunda.
Ve bu tri accept ls bloğu her yere gidebilir.
Tüm dosyamızı bir try except else bloğuna sarabiliriz.
Bunu her bir fonksiyonumuzun içine ekleyebiliriz, ne istersek onu kullanabiliriz.
Bu, Python'un hataları ele almak için bize sunduğu bir başka araçtır.
Ama sana bir şey sormama izin ver.
Peki ya baskı yerine, diyelim ki, on bölü yaş yapsaydım?
Eğer programımı çalıştırırsam.
Buraya sıfır yazıyorum ve enterlıyorum.
Oraya giriyorum.
Lütfen numaramızı girin.
Ama bir numara girdim.
Bu hatalı bir program.
Bir sayı yazmama rağmen hala aynı hata mesajını veriyor.
Peki bunu nasıl halledeceğiz?
Farklı hataları nasıl ele alırız, biri değer hatası ve diğeri açıkça sıfır bölme
hatasıdır.
Kabul bloğunda, ne tür bir hata işlemek istediğimi basitçe verebilirim.
Ve unutmayın, bunlar kopyalayıp yapıştırabileceğim yerleşik hatalar.
Yani benim durumumda, bunun bir değer hatası için olduğunu söylemek istiyorum, böylece programımı çalıştırırsam.
Ve sıfır yazıyorum.
Havamı alıyorum.
Bu kilit dışında sadece değer kabul eder.
Hatalar.
Diğer hatalar umurunda değildir.
Hmm.
Peki burada ne yapabiliriz?
Bir seçenek de buraya kopyalamak ve "hey, bir tane daha ekleyelim" demek, ancak bu durumda sıfır bölme
hatası istiyorum.
Bir kullanıcının sıfır girmesi durumunda, lütfen h değerini sıfırdan büyük girin diyebilirsiniz.
Yani bunu şimdi çalıştırırsam.
Ve sıfır yapıyorum, lütfen h değerini sıfırdan yüksek girin.
Saçma sapan şeyler yaparsam.
Hay aksi.
Eğer anlamsız bir şey yaparsam lütfen bir numara girin cevabını alıyorum.
Sonunda bir sayı girersem, şuna bakın.
Teşekkür ederim.
Her şey çalışıyor.
Şimdi sorum şu.
Girersek ne olur?
Burada başka bir değer hatası daha var.
Ve bu değer hatası sadece ünlem işareti içerecek.
Şimdi ne olacak?
Anladım mı?
Bu kabul bloğu yalnızca bir kez çalışacağı için lütfen bir sayı girin.
Aradığı hatayı yakaladığı anda çalışacaktır.
Ve sonra döngüye geri dönün.
Böylece hatalardan yalnızca biri yakalanacaktır.
Bir ara verelim ve bir sonraki videoda hata işleme hakkında daha fazla şey öğrenelim.
Güle güle.