Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

Javascript Try-Catch ve Try-Catch-Finally

Bir Javascript makalesinden yine selamlar :)

Bu makalemizde yazılım dünyasında programları çökmekten kurtaran ve C#, Visual Basic,Java gibi programlama dillerinde de kullanılan try-catch yapısını öğreneceğiz.

Try-catch yapısından kısaca bahsedersek; programın çalışma anında istisnai durum (exception) dediğimiz ve programın kapatılmasıyla sona eren olayları kontrol altında tutan bir kod bloğudur.Gerçi kod bloğu kaba bir tabir oldu zira bir nevi kontrol yapısıdır ve bu yapı sayesinde programın çökmesini engelleyerek bir başka olaya yön vermemizi sağlar.

Try-catch yapısının birçok dilde olan genel yapısı ise:

try
{
        //denetim altına alınmasını
        //istediğimiz kodlar
}
catch(hata)
{
        //hata durumunda çalıştırılması
        //istenen kodlar
}

şeklindedir ve bu yapı aynen javascriptte de kullanılır.

Örneğin çok basit bir try-catch uygulaması gerçekleştirelim: kullanıcı iki sayıyı toplamaya çalışsın ve sayılardan birini ya da ikisini olağan dışı biçimde yazarak hata meydana getirsin.
Bu örneği gerçekleştirmek için bir HTML belgesi oluşturalım:

html-belgesi

html-web

Sayfamızın tasarımını yaptıktan sonra daha önceki javascript makalemizde öğrendiğimiz toplama işlemini yapalım,bunun için öncelikle input nesnelerine girilen değerleri yakalayıp sayısal tip olan integer'a dönüştürüyoruz:

javascript-parse-int height="139px">

ve sayıları toplayıp alert metoduyla ekrana yansıtıyoruz:

js-alert

Buraya kadar zaten daha önce öğrendiğimiz javascript toplama işlemi konusuydu şimdi ise makalemizin asıl konusu olan javascript hata denetimi için try-catch konusuna geldik ve az önce öğrendiğimiz try catch yapısını kodlarımıza uyarlayalım:

js-try-catch

Bu örnekte dikkat etmemiz gereken hataya en açık olası durum olan toplama işleminin gerçekleşme noktasıdır ve girilen değerlerden bir ya da ikisi toplama işlemi için uygun değilse 18. satırdaki "throw hata" satırı bizi catch bloğuna gönderecektir.Zaten dikkat ederseniz catch deyiminin parantez içerisindeki "hata" sözcüğünü fırlatmış (yazılımcılıkta böyle denir) oluruz.
Şimdi sayfayı tarayıcımızda çalıştıralım:

html-js

html-button-click height="247px">

Şimdi bu konuda size bir iyi bir de kötü haberim var: kötü haber javascriptte try bloğu içerisinde if-else ya da diğer kontrol yapıları olmadan try-catch çalışmıyor,aslında programlama dillerine bakarsak kontrol yapıları olmadan program direkt kendini catch bloğuna atar ama nedense javascript'te illa ki bu konuda bir kontrol yapısı kullanılması gerekiyor.İyi haber ise kontrol yapıları ile yine de çalışıyor :)

Yaptıklarımızı tekrar gözden geçirelim:

kullanıcı inputlara ne yazarsa yazsın butona tıkladığı anda "topla" fonksiyonu çalışmaya başlar ve 11 ile 12. satırdaki değişkenlere inputlardan gelen değerleri sayısal ifadeye çevirerek atama yapar.
14. satırda ise bu değerler toplanmaya çalışılır ve 16. satırda toplanan ifadenin geçerli bir sayısal ifade olup olmadığına bakılır.
Eğer toplama işleminde bir hata sözkonusu ise 18.satırda throw deyimi içerisindeki metni catch bloğunun "hata" isimli exception (istisna) referansı verir ve catch bloğunu çalıştırır.Hata yoksa else ifadesi içerisindeki alert metodu çalışarak işlem sonucu ekrana yansıtılır.

Son olarak finally (sonunda) bloğunu öğrenelim; finally bloğu try-catch ifadesinin devam uzantısıdır ve kullanılması zorunlu değildir ancak program doğru veya yanlış çalışsın yinede içerisindeki kodu çalıştırır.Bu örnekte kullanıcı hatayla karşılaşırsa ya da karşılaşmasa bile programı kullandığı için kendisine teşekkür mesajı gösterelim:

javascript-try-catch-finally height="430px">

Böylece her ne şekilde olursa olsun kullanıcı butona tıkladığında teşekkür mesajını görecek.

Javascript try-catch ve try-catch-finally konularının sonuna gelmiş olduk,bir sonraki makalemizde görüşmek üzere hoşçakalın :)

Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu