TRY CATH KULLANIMI
Hata olmasını beklediğimiz kodları try’in içerisine yazarız. Eğer hata yakalanırsa kod patlamaz ve hata catch’e düşer
try { //Hata olmasını beklediğimiz kodlar } catch(err) { //Hata olduğunda çalışacak kodlar }
try catch run time error hataları yakalar. Eğer hata yakalamassa catch’i atlar ve koda deva eder. Aşağıdaki kod parçacığında try’in içerisine hata olmasını beklediğimiz kod kısmını yazdık. Buradaki hata sonucDondur( ); diye bir metodumuzun aslında olmamasıdır. Kod burada patlamak yerine hatayı catch’e atar.
Catch de bu hatayı err parametresiyle alır ve kendi içerisindeki kodları çalıştırmaya başlar. Try catch’te 2 tane senaryo söz konusudur.
1. Try blogu içerisinde hata yakalanır kalan satırlar çalıştırılmadan kod catch’e atlar.
2. Try blogu içerisinde hata yakalanmaz catch blogu atlanır.
Bir diğer önemli konu ise try blogu içerisinde hata yakalandığı zaman o satırdan sonraki kodlar çalıştırılmadan catch’e atlanır. Aşağıdaki örnekte sonucDondur( ); metodunun olmadığını farkedip hata meydana getirdiğinde arkasından gelen alert(“program durduruldu”); kodunu çalıştırmadan catch’e atlayacaktır.
<script> try { alert("program basladi"); sonucDondur(); alert("program durduruldu"); } catch(err) { alert("böyle bir method yoktur"); document.write("Message : " + err.message + "<br/> description " + err.descripton +"<br/> stack" + err.stack); } alert("program kaldigi yerden devam ediyor"); </script>
Hata nesnelerinin sıkça kullanılan 3 adet propertysi vardır bunlar ;
1. .message –> err.message : Hata hakkında mesaj barındırır.
2. .description –> err.description : Hata tanımını barındırır.
3. .stack –> err.stack : Stack bilgilerini barındırır.
TRY CATCH İLE KENDİ HATALARIMIZI TANIMLAMA
Bazen kod yazarken kendi hatalarımızı tanımlamak isteyebiliriz. Örneğin, bir sayiyi 0’a bölmek javascriptte hata değil infinity yani sonsuz sonucunu vermektedir. Ama biz bunun bir hata olarak algılanmasını istiyorsak yapmamız gereken şey kendi hatamızı tanımlamak. Aşağıdaki kod blogunda koda eğer sayi2 0 girilirse bir hata nesnesi fırlatması söylenmiştir. Burda throw new Error(“sayi sifira bölünemez”); bizim tanımladığımız hata nesnesidir ki bu nesne tanımıyla karşılaşıldığında kod çalışmaya direkt olarak catch’ten devam eder. Normalde bu nesne otomatik olarak oluşmaktadır ancak biz kendi hatamızı spesifik olarak tanımlamak istiyorsak bu hata nesnesini kendimiz oluşturmak zorundayız.
<script> try { var sayi1,sayi2; var sonuc; sayi1= Number(prompt("1. sayisi giriniz")); sayi2= Number(prompt("2. sayiyi giriniz")); if(sayi2==0) throw new Error("sayi sifira bölünemez"); else sonuc = sayi1 / sayi2 } catch(err) { document.write(err.message); } alert("program kaldigi yerden devam ediyor"); </script>