Programcı olmanın kaçınılmaz bir parçası da programlarınızın çok sayıda hata vermesidir.
Böceklerden kaçamazsınız.
Programların bozulmasını önleyemezsiniz.
Burada, diyelim ki virgülsüz yanlış yazılmış bir kelime ile basit bir yazdırma işlevi.
Eğer bunu çalıştırırsam, bunu çok sık görürüz, değil mi?
Bu kurs boyunca bu hataların çoğunun okunduğunu görüyoruz.
Eğer bir artı eklemeye çalışırsam, diyelim ki.
Doğru.
Çalıştır'a tıklayın.
Bu işe yarıyor, ama sonra aniden birine merhaba eklemeye karar veriyorum.
Ve yine, kırmızının bu kez bir tür hatası olduğunu görüyoruz.
Bir hata.
Programımız bu şekilde çöküyor.
Buna istisna denir.
Ve Python.
Yorumlayıcı "Hey, ne yaptığın hakkında hiçbir fikrim yok, bir sorun var" dediğinde bu istisnaları yükseltir.
Artık ne yaptığımı bilmiyorum.
Her ne yapıyorsam bırakacağım ve size bir çıktı vereceğim.
Bu kötü çünkü şu anda sadece oynuyoruz.
Ancak Google isek ve insanlar e-postalarını kontrol etmek, YouTube videolarını izlemek için bize güveniyorsa, programlarımızda
istisnalar varsa ve çalışmayı durdurup hata veriyorsa, bu kötüdür.
Bu da şirketlere milyonlara mal olabilir.
Peki programımızı çökerten bu istisnaları nasıl ele alabiliriz?
Hata işleme denen bir şeye ihtiyacımız var.
Bu, programcı olmanın doğal bir parçasıdır.
Ve iyi bir programcı, programındaki hataların üstesinden gelebilir.
Çünkü programlarımızın sadece havalanmasına izin vermek yerine, onları ele alabiliyoruz, böylece bunun gibi
bir tür hatası gibi bir şey alırsak, bu hatayı programlarımızda gerçekten ele alabiliyoruz.
Ve bu bölümde, bununla ilgili her şeyi öğreneceğiz.
Ancak temel çıkarım, hata işlemenin hatalar olsa bile Python betiğinin çalışmaya devam etmesine
izin vermesidir.
Kulağa oldukça ilginç geliyor, değil mi?
Bu konuya girmeden önce, Python'da var olan bazı hatalardan bahsedelim.
Uyumsuz iki farklı veri türü arasında bir şey yapmaya çalıştığımızda tür hatasını zaten görmüştük,
int ve string eklemek gibi ve Python'daki bu yerleşik istisnalar, bunlardan çok var ve bir göz atabilmeniz için bu
kaynağa bağlantı vereceğim.
Ancak burada ilerlersem, öznitelik hatası ve dosya hatası görürsünüz.
Devam ediyoruz, bir isim hatası var.
Çok fazla hata referansımız var, sadece bir ton.
Oldukça yaygın olan bazılarının üzerinden geçmeme izin verin.
Biri sözdizimi hatası.
Eğer def yaparsam ve diyelim ki.
Whoo hoo!
Burada noktalı virgülü unutuyorum ve bunu çalıştırıyorum.
Sözdizimi hatası mı alıyorum?
Bu standart bir python sözdizimi değildir.
Hatamı düzeltmeliyim.
Ayrıca, diyelim ki bunun gibi bir artı ad kullanırsam ve tıklarsam ad hatası denen bir şey de alabiliyorum.
Bunun gibi bir isim.
Kırmızı alt çizgiyi burada görebilirsiniz.
Tanımsız ad alıyorum, böylece bu kodu çalıştırırsam.
Bir isim bulacağım.
Adı tanımlanmamıştır.
Hava tipini gördük.
Peki ya bu?
Ya elimizde bir liste varsa?
Lee diyelim.
Bir, iki, üç.
Ve yalana erişiyorum, diyelim ki beşlik bir endeks.
Eğer bunu çalıştırırsam.
Bir dizin hata listesi alıyorum.
Dizin aralık dışında.
Ya bir sözlüğümüz olsaydı?
Diyelim ki burada bir sözlük oluşturuyoruz.
A diyeceğiz.
Birini aradı ve ben de bunu burada bırakacağım.
Yani bu bir sözlük olacak.
Burada bir sözlük hazırlarsam ve var olmayan bir şeye erişmeye çalışırsam ve çalıştır'a tıklarsam.
Var olmayan bir anahtara eriştiğim için bir anahtar hatası alıyorum.
Ayrıca, diyelim ki beş bölü sıfır da olabilir, bu da bana sıfır bölme hatası vermelidir çünkü sıfıra
bölmeye çalışıyorum ve bunu yapamazsınız.
Bu yüzden Python'da birçok hata veya yerleşik istisna vardır.
Şimdi, bunların hiçbirini ezberlemek zorunda değilsiniz.
Çoğu zaman programınızda karşınıza çıkacaklar ve ne anlama geldiklerini bileceksiniz, ancak bunları okumak için her
zaman bir referans olarak kullanabilirsiniz.
Ancak kendinize sormanız gereken soru şu: Bunlardan nasıl kaçınabiliriz?
Çünkü çoğu program sadece bizim bilgi yazmamızdan ibaret değildir.
Genellikle programlar dış dünya ile etkileşime girer, değil mi?
E-postamda oturum açtığımda, bir kullanıcının e-postasını ve şifresini kullanmasına izin veriyorum.
Bir oyun oynadığımda, kullanıcının bir karakteri kontrol etmesine izin veriyorum.
Dolayısıyla programlar sürekli olarak dış dünyayla etkileşim halindedir ve aldıkları girdinin
bekledikleri doğru türde olduğundan emin olmaları gerekir.
Çünkü beklemedikleri bir şey alırlarsa, örneğin bir sayı alırlarsa ve bu sayı diyelim
ki sıfır olursa, bunu veririz.
Bu kullanıcı programımızı bozdu.
Dolayısıyla, bir kullanıcının istemediğimiz kötü bir şey verebileceği bu durumları ele almamız gerekir.
Bir sonraki videoda, hatalarımızla nasıl başa çıkabileceğimizi keşfedeceğiz.
Onda görüşürüz.