‫Tekrar hoş geldiniz.
‫Bu videoda, hataları nasıl yakalayacağınızı ve bir hata oluştuğunda programınızın çökmesine neden olmadan nasıl bir
‫şeyler yapacağınızı öğreneceksiniz.
‫Bu nedenle, catch ve finally'in birlikte yaygın bir kullanımı, kaynakları bir tri blokta elde etmek ve kullanmak, istisnai durumlarla
‫ve bir catch bloğuyla ilgilenmek ve kaynakları son blokta serbest bırakmaktır.
‫Ve bunun ne anlama geldiğini bu videoda ele alacağız.
‫Bu yüzden bir hatayla karşılaşmak için aşağıdakileri yapalım.
‫Konsol sağ hattını kullanıyoruz.
‫Bu yüzden CW çift dokunuşunu girin ve burada lütfen bir sayı girin diyorum ve kullanıcımızdan bir sayı girmesini
‫istiyoruz ve sonra bunu kullanıcı girdisinde saklamak istiyoruz, bu sadece bir dize değişkeni
‫olacak ve kullanıcının girmesi veya söylemesi gereken her şeyi okuyacak ve sonunda bir sayı olmalı, değil mi?
‫Hedefimiz bu.
‫Ancak aşağıdakileri yaparsak ve kullanıcı girişi int olarak girerse ve int kullanırsak, nokta geçer.
‫Yani zaten geçişi gördünüz ve burada kullanıcı tarafından verilen kullanıcı girdisini ayrıştırmaya çalışıyoruz.
‫Bundan bir tamsayı çıkarmaya çalışıyoruz ve şimdi bunu çalıştırırsanız, lütfen bir sayı girin
‫ve üç sırasında programımız iyi aslında buraya bir konsol nokta okuma tuşu ekleyelim.
‫Böylece programın hala iyi durumda olduğunu daha iyi görüyoruz.
‫Bu yüzden lütfen bir numara girin.
‫Sadece beş gireceğim ve programımız hala çalışıyor ve çökmedi.
‫Her şey yolunda, şimdi tekrar çalıştıralım.
‫Ancak bir sayı girmek yerine, bir harf ekleyelim veya bir metin yazalım.
‫Öyle değil.
‫Benim durumumda 16. satırda yaptığımız şey bir tamsayıya dönüştürülebilir.
‫Enter tuşuna basıyorum ve programım çöküyor ve işlenen sistem biçimi istisnasında istisna diyor giriş
‫dizesi doğru biçimde değildi.
‫Tamam.
‫Yani kullanıcı tarafından verilen dize, bir tamsayıya ayrıştırmak için doğru formatta değildi.
‫Format istisnasının amacı da budur.
‫Şimdi bunu bir try ve catch bloğu oluşturarak halledebiliriz.
‫Diyelim ki try kullandık ve burada kullanmak için bir seçenek olduğunu görebilirsiniz.
‫Dene ve yakala.
‫C veya try çift dokunuşunu kullanabilirim ve bu benim için bir try catch istisna atışı oluşturacaktır.
‫Şimdi yapmak istediğim şey, bu kodu denemek ve eğer çalışmazsa programımın çökmesini istemiyorum.
‫Ve tüm bu deneme olayı da bununla ilgili.
‫Dolayısıyla, çalışma zamanı sırasında hata kodu anlamında hata, kod hatası burada ne olursa olsun yürütülmeye çalışılacaktır.
‫Ve eğer işe yaramazsa, o zaman yakala.
‫BLOK yürütülecektir.
‫Dolayısıyla, bu gövde içinde veya buradaki küme parantezleri içinde ne varsa yürütülecektir.
‫Şimdi elimizde sadece atış var.
‫Şimdi fırlatmadan kurtulalım çünkü hala fırlatıyor.
‫Yara Şimdi bir hata oluşursa konsola bir şeyler yazalım.
‫Bu yüzden format istisnası gibi bir şey söylüyoruz.
‫Lütfen bir dahaki sefere doğru türü girin.
‫Ve bu, türünün ne olduğunu bildiğimiz bir şey.
‫Genel bir kullanıcı bunu bilemez.
‫Yani buraya Lütfen harf girmeyin, sadece rakam girin ya da buna benzer bir şey yazabilirsiniz.
‫Şimdi buraya tekrar bir göz atalım.
‫Bir hatayı tekrar bir hataya dönüştürelim ve sonra bu bilgiyi bir istisna biçiminde alalım.
‫Lütfen bir dahaki sefere doğru türü girin.
‫Ve programımız çökmedi, yani programımızın veya kimliğimizin bize, hey, yanlış bir şey var ve kodunuzu
‫iyi idare etmelisiniz demesi anlamında bu istisnayla karşılaşmadık, değil mi?
‫Yani genel olarak yapı bu şekildedir.
‫Bir try bloğunuz var, yani burada hatalarla karşılaşabilecek, bir istisnaya sahip olabilecek bazı kodları deniyorsunuz
‫ve ardından yok etme işlemi işe yaramadığında çalıştırılan bir catch bloğunuz var.
‫Yani bir hata olduğunda, bu catch bloğu yürütülecektir.
‫Burada bir istisna ile bir yakalama söz konusudur.
‫İstisna çok genel bir hatadır.
‫Yani herhangi bir istisna türü olabilir, ancak gerçekten bu hatayla karşılaşırsak, bu yüzden bu koddan
‫kurtulalım, ne tür bir istisna oluşturduğumuzu göreceğiz.
‫Bu yüzden girdiğim dizeye benzer bir şey gireceğim.
‫Ve aslında hiçbir şey olmuyor çünkü atmıyoruz.
‫Buna bir son verelim.
‫Daha önce gördüğümüz gibi atalım.
‫Sadece hata verir ve tekrar çalıştırırız.
‫Buraya bir şey giriyorum ve sistem iletme istisnası diyor.
‫Böylece gerçek istisna hakkında biraz daha kesin bilgiye sahip olduk.
‫Şimdi biliyoruz ki, tamam, bu bir format istisnası, bu yüzden burada istisna yerine format istisnası kullanmalıyız.
‫Yani burada pek çok istisna var.
‫Ancak burada kullandığımız şey bir format istisnasıdır.
‫Burada görebileceğiniz gibi, system adında bir sınıf var, bu format istisnası ve bir argümanın
‫formatı geçersiz olduğunda veya bileşik bir format dizesi iyi oluşturulmadığında atılan istisna.
‫Burada da tam olarak böyle bir şey var.
‫O zaman şu fırlatmadan kurtulalım.
‫Sorun değil.
‫Şimdi bunu farklı bir döneme taşıyalım.
‫Şimdi çok uzun bir sayı oluşturalım.
‫Bir dizeye sığmayan bir şey.
‫Çünkü tahmin edebileceğiniz ya da hatırlayabileceğiniz gibi, bir dizede yalnızca belirli miktarda boşluk vardır.
‫Diyelim ki bunu kaç sayı yapar emin değilim, ama diyelim ki bir tamsayı içinde sadece
‫bu kadar sayı saklanabilir.
‫Yani buradaki tüm bunlar çalışmayacak çünkü bu bir taşma.
‫Yani bir dizginin kaldıramayacağı kadar çok bilgi var.
‫Yani bunu şimdi girersem.
‫Bir giriş sistemi taşma istisnası alıyorum.
‫İşte buradayız.
‫Sistem taşması istisnası.
‫RN 32 için ya çok büyük ya da çok küçüktünüz.
‫Tamam.
‫Ben de öyle dedim.
‫Ve şimdi bu istisnayı da yakalamamız gerekiyor.
‫Dolayısıyla, bunu nasıl halledebileceğimize dair iki yol var.
‫Yani ya burada farklı bir istisna kullanacağız ya da sadece istisna kullanacağız.
‫Dolayısıyla, genel olarak var olan diğer tüm istisnaları ele alıyoruz ve örneğin
‫konsol noktası,
‫kırmızı çizgi, genel istisna, bir şeyler ters gitti diyoruz.
‫Bu şekilde bir kez daha çok uzun bir sayı oluşturalım ve bunu girelim.
‫Ve bu bir taşma istisnası olsa da genel bir istisnamız olduğunu görüyoruz.
‫Yani bu şekilde halledebilirsiniz.
‫Dolayısıyla, sahip olduğunuz tüm farklı istisna türlerini bilmiyorsanız
‫veya hepsini ayrı ayrı yakalamak istemiyorsanız, bu şekilde yapabilir veya bu kadar hassas olabilir ve sadece doğru bir taşma
‫istisnası girebilirsiniz.
‫Şimdi çalışacak ve bir sistem taşması istisnası göreceksiniz.
‫Bunu tekrar çalıştıralım ve lütfen bir sayı girelim ve burada çok uzun bir sayı oluşturalım.
‫Ve hala genel istisnayı alıyoruz çünkü farklı bir metin taşması istisnası girmedik.
‫Numara 32 için çok uzun ya da çok kısaydı.
‫Şimdi tekrar bakalım.
‫Ve taşma istisna numarası 32 için çok uzun veya çok kısaydı.
‫Tamam.
‫Genel olarak istisnaları bu şekilde yakalayabiliriz.
‫Ve çalışabilecek başka istisnalar varsa, görebileceğiniz gibi, bir argüman null istisnası vardır.
‫Şimdi bunun ne anlama geldiğine bir göz atalım.
‫Eğer bunu bile başarabilirsek, göreceğiz.
‫Bir istisna.
‫Lütfen bir dahaki sefere doğru türü girin.
‫Yani boş olsa bile, bizim durumumuzda, bu null istisnasını almayız çünkü girdimiz, hiçbir
‫şey girmesek bile, hala null olmayan boş bir dizeye sahiptir.
‫Bu yüzden bu gerçek istisnaya göre çalışmıyoruz.
‫Burada gördüğünüz gibi, ne zaman bir kod çalıştırmaya çalışsanız, Intel size burada bazı bilgiler bile veriyor.
‫Yani bu gerçekten faydalı.
‫Argüman null istisnası, format istisnası ve taşma istisnası olduğunu görebilirsiniz.
‫Hatta buraya başka bir istisna ekleyebilir ve buna bir argüman null istisnası veya argüman null istisnası diyebiliriz.
‫Ve argüman null istisnası gibi bir şey söyleriz.
‫Değer artık boştu.
‫Bu nedenle, bu çağa girebilmek için null kullanmamız gerekir ki bu konuyu henüz ele almadık, ancak
‫daha sonra ele alacağız.
‫Ve eğer elimizde varsa, bunu yapmayı deneyebilirsiniz.
‫Dolayısıyla, kayda değer videoyu zaten gördüyseniz, bu hatayla karşılaşmayı deneyebilirsiniz.
‫Tamam.
‫Şimdi try catch'in nasıl kullanıldığını gördünüz.
‫Ve şimdi bu videoda size göstermek istediğim bir şey daha var, bu da nihayet ve nihayet böyle
‫yapılıyor.
‫Yani son anahtar sözcüğünü kullandınız ve sonra tekrar küme parantezleri kullandınız ve buradaki kod bloğu
‫içinde, yani bu gövde içinde, ne zaman çalıştırılması gereken kodu girdiniz.
‫Yaptıklarımızı yakalamaya çalışın.
‫Hatanın çalıştırılıp çalıştırılmadığı veya hatanın işe yarayıp yaramadığı önemli değildir.
‫Hata yoktu.
‫Son olarak, hala aranacağız.
‫Yani buna zaten denir.
‫Yani bu da demek oluyor ki.
‫Birazdan göreceğiz.
‫Şimdi bir okla karşılaşalım ve dört dakikalık bir istisnamız olduğunu görelim ve sonra bunun yine
‫de çağrıldığını görelim ve bu bizim son bloğumuz olsun.
‫Ve bu son bloğun arkasındaki fikir, örneğin, bir İnternet bağlantısı başlatmaya çalıştığınızda veya
‫bir dosyaya yazmaya çalıştığınızda, sonunda bir hata oluşabilmesidir.
‫Diyelim ki İnternet bağlantısı koptu ya da içine yazmak istediğiniz bir
‫dosyaya erişiminiz yok ya da ortaya çıkabilecek başka istisnalar var ve her halükarda bağlantıyı ya da dosyayı kapatmak istiyorsunuz.
‫Yani dosyayı açtınız ve şimdi o dosyaya yazmaya çalışıyorsunuz ve deneme bloğu içinde o dosyaya yazdıktan
‫sonra belki çalıştı, belki çalışmadı, ama kesinlikle yapmak istediğiniz şey
‫dosyayı tekrar kapatmaktır, ya da internetten bir şey indirmeye çalışıyorsunuz ve çalışıp çalışmaması
‫önemli değil.
‫Daha sonra İnternet bağlantısını kapatmanız gerekir ve bu da dosyada yapacağınız
‫bir şeydir.
‫BLOCK Ve bu, giriş çıkış türleriyle çalışırken veya evet, genellikle İnternet, Bluetooth veya her neyse bağlantılarla
‫çalışırken çok kullanışlı ve oldukça önemlidir.
‫Gördüğünüz gibi, denemek ve yakalamak hakkında bilinmesi gereken çok şey var, ancak en önemli şeyleri zaten gördünüz.
‫Artık try'ı nasıl kullanacağınızı, catch'i nasıl kullanacağınızı ve istisnaları nasıl bulacağınızı biliyorsunuz.
‫Bazı durumlarda bu o kadar da açık değildir.
‫Yani bazı durumlarda hangi tür istisnaların çalıştırılabileceğini kontrol etmezsiniz.
‫Ancak kodunuzda bir istisna ile karşılaşırsanız, bunun ne tür bir istisna olduğunu bilirsiniz, çünkü
‫fikir Microsoft Visual Studio'nun size hangi istisna olduğunu söylemesi ve ardından kesinlikle
‫bu istisnayı yakalamaya çalışmanız veya sadece genel bir istisna türü okeydokey kullanmanız gerektiğidir.
‫Şimdi sizin için küçük bir meydan okuma var çünkü her zaman küçük bir meydan okuma olmalı,
‫aksi takdirde biraz sıkılabilir veya biraz tembelleşebilirsiniz.
‫Kodu yazmayı denemeniz ve kendiniz kontrol etmeniz gerçekten önemlidir.
‫Bu yüzden küçük bir meydan okuma lütfen devam edin ve sıfıra bölün.
‫Bu kadar basit.
‫Sadece sıfıra bölmeyi deneyin ve bunun için iki değişken kullanın.
‫Pekala, devam edelim ve bunu deneyelim.
‫Bu yüzden sıfıra bölmeyi deneyeceğim.
‫İki tamsayı kullanacağım ve hiç kullanmayacağım.
‫Bir beş olacak ve n hiçbiri iki sıfır olacak.
‫Ve şimdi buraya girilecek bir sonuç kullanacağım.
‫Sonuç, bir rakamının iki rakamına bölünmesine eşittir.
‫Şimdi bunu try ve catch kullanmadan deneyelim, aslında try ve catch kullanmadan önce.
‫O zaman çalıştıralım.
‫Lütfen bir sayı girin ve ardından sıfıra bölün istisnası, umarım bunu halledersiniz.
‫Şimdi bir try ve catch ekleyelim.
‫Bu yüzden deneyin ya da daha kolay hale getirin.
‫Hadi girelim.
‫Burayı deneyin ve blok çift sekmesini kullanın.
‫Ve şimdi denemenin içinde, bunu çalıştırmak istiyorum.
‫Ve eğer işe yaramadıysa, sadece C double gibi bir şey yazmak istiyorum.
‫Sıfıra bölemezsin.
‫Ve şimdi de bu.
‫Az önce yaşadığımız istisnaya bakacağız.
‫Sıfıra bölme işlemi sıfıra bölme girişimidir ve buna sıfıra bölme istisnası denir.
‫Eğer bunu bulmak istiyorsanız, burada bulabilirsiniz.
‫Ben de tam olarak bunu kullanacağım.
‫İstisnayı sıfıra bölme istisnası ile değiştireceğim.
‫Şimdi bu kodu tekrar çalıştıralım.
‫Lütfen önceki sayıyı girin ve sonra sıfıra bölebilirsiniz diyor.
‫Doğru.
‫Bu yüzden umarım bunu denersiniz ve umarım bunu başarırsınız.
‫Ve şimdi kendi denemenizi nasıl oluşturabileceğinizi ve bunu nasıl yakalayabileceğinizi görebilirsiniz.
‫Bir sonraki videoda biraz daha süslü şeyler kullanacağız.
‫Orada görüşürüz.