JavaScriptte hata yönetimi için kullanılan Try Catch yapısı ile ilgili basit birkaç örnek paylaşacağım. Basitçe anlatmak gerekirse bir işlem yapılırken eğer hata yoksa bu işlemi yap hata varsa şu işlemi yap diyebileceğiniz ve olası hataları engelleyebileceğiniz bir yapıdır. Mesela javascriptle bölme işlemi yapıyorsanız 0′ a bölme işlemini bu şekilde engelleyip hatanın önüne geçebilirsiniz.
[code] <script type="text/javascript" language="javascript"> try{ document.write(a); }catch(err){ document.write("HATA : "+err); } </script> [/code]
Örneğin bu kodu alıp çalıştırsanız tarayıcınızda gözükecek hata:
HATA : ReferenceError: a is not defined
bu şekilde olacaktır. Yani a tanımlı olmadığı için a’ yı yazmaya çalışıp hata vermek yerine a’ nın tanımlı olmadığını yazacaktır.
Farklı Hata Durumlarında Farklı İşlemler Yapma (Throw Kullanımı)
Bu vereceğim kodda normalde hata yok normal bir if else kullanılarak da işlem yapılabilir fakat örnek olması açısından bu şekilde bir kodlama yaptım.
Koda bakarsanız a ve b değişkenlerine aynı değeri verdim. Try içerisinde if else kullanarak a ve b’ yi karşılaştırıp olası durumlar için kod yazdım ve throw “buyuk”,”esit” ve “kucuk” olarak durumları tanımladım.
Catch(err) kodu ile hata durumlarını alıyoruz. Sonra bildiğimiz hata durumlarına göre tekrar if else yapısı içerisine giriyoruz. Burada da err ile gelen hata ne ise o durum çalışıyor ve duruma göre ekrana mesajı yazıyor. Burada değişkenler eşit olduğu için ekrana;
a sayısı b ye eşit
esit
yazacaktır. document.write(“<br>”+err); kodu ile hata durumunun ismini de yazdırdık. Kodda göreceğiniz gibi if ve else if kullandım ve sonra hata durumunu bastım. Eğer bilinen durumlar için haricinde başka bir durum oluşursa diye else kısmını da kodunuza ekleyip bilinmeyen durumlar için de kontrol oluşturabilirsiniz. Örneğin a ya da b değişkenine harf veya özel karakter girilirse hata oluşacaktır ama tanımlanan hatalar içerisinde bu yok bunu önlemek içinde else kısmını oluşturup diğer durumlarda ne yapılacağını belirleyebilirsiniz.
[code] <script type="text/javascript" language="javascript"> var a=20; var b=20; try{ if(a > b){ throw "buyuk"; }else if(a==b){ throw "esit"; }else{ throw "kucuk" } }catch(err){ if(err=="buyuk"){ document.write("a sayısı b den büyük"); }else if(err=="kucuk"){ document.write("a sayısı b den küçük"); }else if(err=="esit"){ document.write("a sayısı b ye eşit"); } document.write("<br>"+err); } </script> [/code]
Hata Olmasa da Olmasa da İşlem Yapma (Finally Kullanımı)
Aşağıdaki koda baktığınızda b değişkeni yorum satırında yani toplama işlemi yapılamaz. Bu durumda hata oluşacaktır ve a+b yazdırılamayacaktır. Bu durumda catch çalışıp hatayı yazdıracaktır. Sonrasında alt satıra geçilip a ekrana yazdırılacaktır.
Eğer b’ yi yorum satırından çıkarırsanız bu seferde ekrana a+b yazıdıralacak ve sonrasında tekrar alt satıra geçilip a değişkeninin değeri yazdırılacaktır.
[code] <script type="text/javascript" language="javascript"> var a=10; //var b=20; try{ document.write(a+b); }catch(err){ document.write(err); }finally{ document.write("<br>"+a); } </script> [/code]