‫Tekrar hoş geldiniz.
‫Bu videoda, oluşturduğumuz sanal programımızda yaşadığımız sorunları nihayet
‫çözeceğiz.
‫Ayrıca savunma programlarına da bakacağız.
‫Dolayısıyla, savunmacı programlama fikri, hangi sorunların ortaya çıkabileceğini gerçekten düşünen güvenli bir kod oluşturmaktır, çünkü bu durumda ortaya
‫çıkabilecek sorunlar, örneğin listenin boş olması veya çok fazla arkadaşımızın olmasını
‫istememizdir, bu yüzden sahip olduğumuzdan daha fazla arkadaşımızı davet etmek istiyoruz.
‫Ve bu durumda, liste manuel olarak oluşturduğumuz süper basit bir listedir.
‫Ama bunun bir veritabanından geldiğini düşünün.
‫Yani bir veritabanından ya da web'den, bulut veritabanından ya da buna benzer bir şeyden geliyor.
‫Ve o zaman çok farklı bir hikaye olurdu çünkü bu durumda listenin ne kadar büyük olduğunu asla bilemezdik.
‫Bunu kodda görebiliriz, ancak nereden geldiğine bağlı olarak bunu bilmiyor olabiliriz.
‫Bu durumda, ortaya çıkabilecek farklı sorunları öngörmemiz gerekir ve geliştirirken bunları kendimiz
‫test edebiliriz.
‫Örneğin, bunu zaten yaptık, değil mi?
‫Listeye sahip olduğumuz daha fazla arkadaşımızı girdik.
‫Yani basit bir şey.
‫Bunu çalıştırıyoruz ve sonra bu argüman aralık dışı istisnasını alıyoruz.
‫Ancak bunu nereden aldığımız ilginç bir konu.
‫Dolayısıyla, sorun başka bir yerde olsa bile, get partimizin farklı yöntemi noktasında alıyoruz.
‫Çünkü bakarsak, en kısa isim listesi sıfır diyor.
‫Yani listeyi geçmiş olduğumuz için mevcut olmayan bir liste elemanına erişmeye çalışıyoruz, parti arkadaşı alıyoruz
‫ve bu listeyi buraya geçiriyoruz.
‫Bu listeyi nereden aldığımıza bakarsak, bu iyi bir başlangıç noktası olabilir çünkü burada mevcut olmayan bir şeye
‫erişmeye çalıştığımızı görebiliriz.
‫Peki mevcut olanla ilgili sorun nedir?
‫Bu yüzden buradaki satıra bakıp parti arkadaşımızı bulabiliriz.
‫Orası deniyor.
‫Ve görebiliyoruz.
‫Tamam, bu tampon.
‫Değil mi?
‫Böylece bir tampon elde ederiz, bu da şuradaki listedir.
‫Yani en üst seviyeden bir liste alıyoruz.
‫Yani yine görebiliyoruz, pekala, falanca, filanca, şu kadar kişiden oluşan bu listeyi alıyoruz
‫ve değeri buradan alıyoruz.
‫Listenin iyi olup olmadığını kontrol etmek için iyi bir nokta aslında Get Party Friends yöntemimizdir çünkü burada listeyi
‫alıyoruz, değil mi?
‫Bu noktada elimizde bir liste var, bu listeyi kontrol edebiliriz.
‫Bu listenin yapmak istediğimiz şey için yeterince iyi olup olmadığını görebiliriz.
‫Ve yapmak istediğimiz şey, bu listedeki öğelerin hesabına dayalı bir şey yazmaktır,
‫böylece sayının liste nokta sayısından büyük olup olmadığını kontrol edebiliriz.
‫Bu da bize iletilen liste.
‫Eğer durum buysa, yapabileceğimiz şey sadece bir şey yazdırmak olabilir, bunu yapmayın veya hata ya da bunun gibi
‫bir şey.
‫Ancak yapabileceğimiz daha da iyi bir şey, programın çökmesini sağlayabiliriz.
‫Böylece programın bir sorunu olduğunu biliyoruz, ancak aynı zamanda programın çalışmasını çok erken bir aşamada durduruyoruz
‫çünkü bir veritabanına bağlantımız olduğunu ve şimdi tüm bu farklı hataları yarattığımızı veya sadece koddan
‫geçtiğimizi hayal edin ve bu yöntem get party arkadaş çalışıyor ve diyelim ki veritabanına bağlandı
‫ve veritabanına bir şeyler yazdı ve sonra kodu tekrar çalıştırıyoruz.
‫Ve bazı nedenlerden dolayı veritabanı durumu değişti ve şimdi aklımız karıştı çünkü bize gösterilen
‫veriler tamamen saçma ve onunla çalışamıyoruz.
‫Bu yüzden bu hatayı düzeltmek gerçek bir sorun olacaktır.
‫Tamam.
‫Bu nedenle, bunu mümkün olduğunca erken yakalayabiliriz, böylece burada basitçe bir argüman aralığı dışı istisnası atabiliriz.
‫Bu nedenle, yeni argüman aralık dışı istisnasını atın çünkü doğru yaptığımız şey buydu.
‫Ve istisna dışındaki bir argümanın birden fazla aşırı yüklemesi vardır.
‫Bu yüzden burada param ismiyle bir tane olabilir.
‫İstisnayla birlikte bir mesajımız veya mesajla birlikte bir param adımız olabilir.
‫Yani burada şöyle bir şey söyleyebilirim, tamam, sorun sayımdır ve sayım listedeki öğelerden
‫büyük olamaz ya da buna benzer bir şey.
‫Yani bu, gösterebileceğimiz şeylere bir örnek olabilir.
‫Şimdi tekrar çalıştıralım çünkü şimdi bu hatayı gerçekten yakalayabilmeli ya da en azından bu hatayı aldığımızda bir argüman
‫aralık dışı istisnası atabilmeliyiz.
‫Tamam.
‫Bu nedenle, işlenen istisnayı görebiliriz, sistem argümanı aralık dışı istisnasının parametre sayısı
‫listesindeki öğelerden daha büyük olamayacağını söylüyor.
‫İşte burada yazdıklarımızın sonucu budur.
‫Yani istisna bu şekilde görünecektir.
‫Artık sorunun ne olduğunu biliyoruz.
‫Biraz daha etkileyici.
‫Tam da sorun aslında burada değilken.
‫O yüzden bu iki satırı yorumlamama izin verin.
‫Sorun bu noktada değil, daha aşağıda ortaya çıkmıştır.
‫Farklı bir yöntemle elde edildi.
‫Yani 42. satırda.
‫Ancak asıl sorun çok daha önce ortaya çıktı.
‫Doğru.
‫Ve endeks istisna kapsamı dışındaydı.
‫Bu da çok genel bir ifade, değil mi?
‫Her şey olabilir.
‫Doğru.
‫Dolayısıyla daha erken yakalamak, sahip olduğumuz sorunların nerede olduğunu görmemize yardımcı olur.
‫Elbette yapabileceğimiz şey, tamam, bu değeri girdiğimizde ve bu değerin bir değer giren
‫bir kullanıcıdan geldiğini varsayalım, diyebiliriz, değil mi?
‫Böylece sıfırdan sahip olduğumuz liste elemanı sayısına kadar herhangi bir değer girebilirsiniz.
‫Böylece daha erken yakalayabilirdik.
‫Burada bile bir test yapabiliriz.
‫Yani eğer.
‫Arkadaşlar.
‫Nokta sayıları.
‫Buraya girdiğimiz değerden daha az ve bu değeri kullanıcıdan tekrar alabiliriz.
‫O zaman onlara bir mesaj verebiliriz, değil mi?
‫İstisnamızı fırlatmayacağız.
‫Programımızı çökertmeyeceğiz.
‫Kullanıcıdan sadece yeni bir değer girmesini isteriz.
‫Ancak bunu burada yapmıyoruz çünkü bir programcı olarak değeri buraya girebilir ve bu hataları şu anda manuel olarak zorlayabiliriz.
‫Doğru.
‫Bu da sorunu çözmenin ya da aslında erken yakalamanın bir yoludur.
‫Şimdi, diyelim ki.
‫Buraya eksi bir gibi aptalca bir değer giriyoruz.
‫Pekala, şimdi tekrar çalıştıralım.
‫Aslında, tekrar çalıştıralım.
‫Ve programımız çalışıyor gibi görünüyor, ancak orada hiçbir şey göstermiyor.
‫Yani hiç göstermedi.
‫Hatalar herhangi bir hata vermedi, ancak herhangi bir arkadaş da göstermiyor.
‫Programımız eksi bir ile çalışıyor gibi görünüyor çünkü listemizden eksi bir liste öğesi
‫almaya çalışıyoruz ve bu bize değerli bir bilgi vermiyor.
‫Şimdi yapabileceğimiz şey, elbette, buraya başka bir koşul eklemektir.
‫Sayı sıfırdan büyük olmalıdır.
‫Eğer durum böyle değilse, o zaman called cannot be greater than the elements in the list
‫or lower zero gibi bir şey yazabiliriz.
‫Yani bu, bunu ifade etmenin sadece bir yolu.
‫Ve şimdi tekrar çalıştırırsak, bu hatayı veririz.
‫Yani bu, programın daha önce bir ok atmadığı bir şeydi, ancak şimdi bir geliştirici olarak anladık ki, tamam, bu sahip
‫olmak istemediğimiz bir durum.
‫Bu, birlikte çalışmak istemediğimiz bir durum.
‫Ve dediğim gibi, iyi keserdik, bu değeri bir yerden almaya çalışırdık ve daha önce yakalamaya
‫çalışırdık.
‫Şimdi, daha da komik bir durumla karşı karşıya olduğumuzu varsayalım.
‫Yani arkadaşımın listesinin boş olduğu bir durumla karşı karşıyayız.
‫Bu yüzden burada boş bir liste oluşturacağım.
‫Yani, şimdi bu yorumlanacak ve şimdi bu boş listeye sahip olacağız.
‫Tekrar çalıştıralım ve programımızın hala çalışıp çalışmadığını görelim.
‫Ve şimdi hala argümanımız aralık dışı istisnasını alıyoruz.
‫Bu çok güzel.
‫Görünüşe göre burada oluşturduğumuz istisna bu sorunu bile çözüyor, böylece boş olsa bile listenin nasıl
‫olduğuna manuel olarak bakmak zorunda kalmıyoruz, değil mi?
‫Yani arkadaş listemize bakarsak, arkadaş listemiz boştur, ancak sonuçta sıfır sayısına ulaşırız.
‫Yani liste null olsa bile, liste hala sıfırdır.
‫Yani orada elde ettiğimiz değer hala sıfırdır.
‫Ancak gerçek bir nul'u zorlayabileceğimiz tek şey bu değildir.
‫Yani Fransa'yı bu boş liste olan France ile geçmek yerine, aslında burada null geçebiliriz.
‫Diyelim ki bir nedenden dolayı bu listeyi oluşturamadık çünkü veritabanı bağlantısı çalışmadı ya da buna
‫benzer bir şey oldu ve sonuç olarak null elde ettik ve şimdi null'u geçiriyoruz ve aslında bir liste gerektiren
‫bir yönteme null'u geçirmeye çalışıyoruz.
‫Şimdi çalıştıralım ve bakalım bu sefer ne tür bir hata alacağız.
‫Yani şimdi bir nesne listesinin örneğine ayarlanmamış bir null reference exception nesne referansı alıyoruz null
‫idi.
‫Yani şimdi geçtiğimiz liste şimdi oldu.
‫Yani bir hata atmadan önce bile bu hatayı alıyoruz.
‫Bu durumda yapabileceğimiz şey, elbette bu durumu da yakalayabilmektir.
‫Bu yüzden devam edebilir ve başka bir if deyimi yazabiliriz.
‫Liste null ise, null işaretçi atılır.
‫Exception yeni argüman atar.
‫NULL istisnası.
‫Liste.
‫Liste boş.
‫Tamam.
‫Elbette burada liste boş olmamalı yerine daha açıklayıcı olabilirsiniz.
‫Lütfen İnternet bağlantısını veya buna benzer bir şeyi kontrol edin.
‫İnternet bağlantısı veya verilerinizi aldığınız yer olabilir.
‫Tekrar çalıştıralım.
‫Ve şimdi argümanımızı şimdi istisna olarak atmalıyız.
‫Gördüğünüz gibi, liste boş parametre listesidir.
‫Mükemmel.
‫Tamam.
‫Şimdi, tüm bunları neden yaptığımızı merak edebilirsiniz.
‫Programımın her zaman çökmesini istemiyorum.
‫Bunu, programımızın veritabanındaki bir şeyi gerçekten değiştirecek duruma gelmemesi için yapıyoruz.
‫Veritabanında, küçük programımızda hiçbir şeyi değiştirmiyoruz.
‫Ama o zaman böyle olacağını hayal edin.
‫Bu çok farklı bir durum ve burada bazı ciddi sorunlar yaratabiliriz.
‫Şimdi, size son bir şey daha göstermek istiyorum, çünkü tüm bunlar olmadan önce, değil mi?
‫Bu if ifadesinden, bundan, şundan ve benzerlerinden ve arkadaş listemizden
‫önce.
‫Evet, gerçekten durabilirim.
‫Daha önce burada şu arkadaşlarımız vardı, şuradaki arkadaşlarımızı geçtik, sonra partimizde on arkadaşımız olsun istedik
‫ama sadece yedi arkadaşımız var.
‫Bu durumda, bunu çalıştırdığımızda yapabileceğimiz şey, sahip olduğumuz bu hatayı zorlayabiliriz ve hata get party
‫arkadaşımızdaydı.
‫Böylece bu argümanı aralık dışı istisna dizini aralık dışındaydı şeklinde alırız.
‫Yani bu, düzeltmeden önce yaşadığımız bir sorun.
‫Doğru.
‫Ancak şimdi bakabileceğimiz ilginç şey çağrı yığınıdır.
‫Yani çağrı yığını diye bir şey var.
‫Burada biraz daha büyütmeme izin verin.
‫Aslında, hepsini kapatmama izin verin.
‫Şimdi bu çağrı yığınına bakalım.
‫Buradaki çağrı yığını şu anda 46. satırda olduğumuzu söylüyor.
‫Tamam.
‫İşte buradayız.
‫Yani parti arkadaşı edinme yöntemindeyiz.
‫Şimdi, bir adım daha yukarı çıkarsak, parti arkadaşı edinme yönteminin çağrıldığı yerin burası olduğunu görebiliriz.
‫Şimdi get party friends çoğul yönteminin içindeyiz.
‫Peki ya bu yöntemin nerede çağrıldığını bilmek istiyorsanız?
‫Şey, 13. hatta arandı.
‫Böylece çağrı yığını ile nereden çağrıldığımızı, nereden tekrar çağrıldığımızı ve benzerlerini görebiliriz.
‫Böylece ilk metodun çağrıldığı seviyeye kadar gidebiliriz.
‫Ve ilk yöntem parti arkadaşlarını çağırmaktı.
‫Sonra bu vahşi döngüye giriyoruz, sonra get party friend çağrılıyor, sonra buradaki
‫metoda giriyoruz ve son olarak değişkenimiz boş bir listeye göre oluşturuluyor.
‫Pekala, umarım bu size hata ayıklama konusunda küçük bir giriş yapmanızı sağlamıştır.
‫Elbette bilinmesi gereken daha çok şey var, ancak sizi tüm ayrıntılarla sıkmak
‫istemiyorum çünkü bazı şeyler yararlı, ancak birçoğu günlük yaşamınızda gerekli olmayacak.
‫Çünkü genel olarak, elbette devam edip hata ayıklamaya gidebilir ve buradan ulaşabileceğiniz tüm farklı
‫pencereleri kontrol edebilir ve çalışan iş parçacıklarına ve paralel
‫süreçlere vb. bakabilirsiniz.
‫Ancak bence şu anda gördükleriniz, yazılımınızda hata ayıklamak için
‫ihtiyaç duyacağınız ana şeyler ya da ana araçlar olacak.
‫Tamam.
‫Umarım bunu beğenmişsinizdir ve umarım gelecekteki programlarınızda bundan faydalanabilirsiniz.
‫Ve şimdi nihayet hata ayıklamanın nasıl çözüldüğünü görebilirsiniz.
‫Bu arada, bu geri bildirim için teşekkürler çünkü bir hata ayıklama bölümünün eksik olduğuna dair geri bildirim aldım,
‫bu yüzden bu küçük bölümü oluşturmaya karar verdim.
‫Geri bildiriminiz için çok teşekkürler.
‫Bu kursta eksik olduğunu düşündüğünüz bir şey varsa veya bir şeyin çok kötü olduğunu düşünüyorsanız,
‫lütfen bana doğrudan kötü bir puan vermeyin, ancak kursu geliştirebilmem için ne olduğunu bana bildirin çünkü amacım
‫bunu piyasadaki en iyi C-sharp kursu yapmak.
‫Yardımlarınız için çok teşekkürler ve bir sonraki videoda görüşmek dileğiyle.