İçerikler
Yazılım sektöründe olanların ve işlemlerin daha istikrarlı çalışması, algoritmanın çökmemesi için try, Catch yapısına ihtiyaç duyarlar. Bu yapı koşul belirtmede işimize yarayan if else yapısı gibidir fakat bu yapı olayları kontrol altına alan en garanti çözümdür.
Try-catch yapısı; programın çalışma anında istisnai durum dediğimiz ve programın kapatılmasıyla sona eren olayları kontrol altında tutan bir kod bloğudur. Yani bu yapı sayesinde programın çökmesini engelleyerek bir başka olaya yön vermemizi sağlar. Böylelikle hazırlamış olduğumuz kodlar sağlıklı bir biçimde işlem görmüş olup, sistem güvende olacaktır.
Bu yapıyı incelerken koşul belirtme yapısı ile hemen hemen aynı olduğunu da göreceksiniz.
try{ // Sağlıklı bir biçimde çalışan sistem ve kontrol aşaması } catch(a){ // Hata bulunduğunda çalışacak olan alan }
Yukarıdaki şekil bundan önce programlama dilinde temel atmış olanların veya api sistemi kullanan kişilerin dikkatini çekecektir. Bu yapı hemen hemen her programlama dilinde aynıdır.
Try-Catch Yapısı İle İlgili Küçük Ama Etkili Örnek
Şimdi kullanıcıdan 2 adet sayı girmesini isteyelim ve bu 2 sayıyı toplatıp sonucunu yazdıralım. Kontrol olarak try-catch yapısı kullanalım. Burada yapılacak kontroller şöyle olabilir; boş mu? Sayı değeri olmayan veri var mı? Bu örneğe ait örneği yazalım ve kodlar üzerinden inceleme başlayalım.
Öncelikle html kısmı olan kullanıcıdan veri alınacak olan kısmı oluşturalım.
Sayı 1 : <input id="sayi1" type="text" /> Sayı 2 : <input id="sayi2" type="text" /> <input id="sonuc" type="submit" />
Gel gelelim asıl konumuz olan javascript kodlarına. Öncelikle html sistemine bakarsak 2 adet sayı girilecek input ve bunu yollayan bir submit bulunmaktadır. Submit butonunu basıldığında ise islem() çalışmaktadır.
function islem(){ var sayi1 = parseInt(document.getElementById("sayi1").value); var sayi2 = parseInt(document.getElementById("sayi2").value); var topla = sayi1 + sayi2; };
Burada gelen verileri value ile almakla kalmayıp bir de parseInt fonksiyonundan geçirerek değerlerin sayısal bir veri olduğunu, sayısal değere göre işlem yapılması gerektiğini söylüyorum.
Try-catch yapısında yer alan try alanına yukarıdaki kodları yazıyoruz. Ardından sorguları hazırlayarak bu sorgudan dönen hata değerlerini catch yapısına yönlendiriyoruz.
function islem(){ try{ var sayi1 = parseInt(document.getElementById("sayi1").value); var sayi2 = parseInt(document.getElementById("sayi2").value); var topla = sayi1 + sayi2; if(!topla){ throw("Sayısal Değerler Giriniz!!"); }else{ document.write(topla); } } catch(a){ document.write(a); } };
Buradaki kod yapısında koşul ifadelerini kullanarak sonuç aşamasına giderken karşımıza çıkacak olan değerleri sorgulattık. Sorgulama sonucunda bir hata ile karşılaşılır ise bunu throw ile catch bölümüne yollamış olduk. Böylelikle işlemin hemen sonlandırılarak catch bölümüne atılmasını sağladık.
Bu kod yapısı örnek ve anlama açısından hazırlandığından dolayı böylesi basit yerlerde kullanmak belki de bir anlam ifade etmiyor olabilir ama sistemi yoracak ve kod yapısının çalışmasını etkileyecek olan yerlerde çok yararı dokunacaktır.
Örnekte inputtan gelen değerler boş olduğunda veya sayısal bir değer girilmediğinde catch ile işlem yapmasını sağladık.
Finally Yapısı ve Kullanımı
Bu kod bloğu aslında pek kullanılan ya da tercih edilen bir şey değil. Bu öyle cool bir tavır sergilemektedir ki pek tercih edeni yoktur. Bu eleman catch değerinden sonra yer alır ve try ya da catch alanı hangisi çalışırsa çalışsın beraberinde Finally de çalışmaktadır. Yani yukarıdaki sorgudan ne dönerse dönsün kendisi şartsız bir biçimde çalışmaktadır. Yukarıdaki örnekte catch ifadesinden sonra şu alttaki kodu ekleyerek örneği biraz geliştirelim.
Finally{ document.write("Modül: ibrahimcevruk.com"); }
Böyle bir ekleme yapıldığında try alanı çalıştığında işlem sonrasına Modül: ibrahimcevruk.com yazısını ekleyecektir. Ya da catch yapısı çalıştığında gene aynı yazısı yazacaktır. Yani bu blok sorgu dışında yapılacak işlemlerin gerçekleştiği alandır diyebiliriz.