JavaScript Hata Yakalama

JavaScript ile hata yakalama konusunu anlatmadan önce hata nasıl oluşur bu kavramı anlamak gerekir. Nesne yönelimli bir programlama yapıyorsanız. Çok fazla satırdan oluşan ve kompleks kodlar yazıyor olmanız oluşabilecek durumlardan biridir. Formlardan veri okurken, ajax ile veri tabanından veri getirirken yada istenilen formatta veriyi oluşturmaya çalışırken hatalar meydana gelebilir. throw komutu ile bu hataları yakalayıp, sayfanın uygun şekilde çalışmasını devam ettirebiliriz.

Örneklere geçmeden önce bazı ifadelerin anlamlarını inceleyelim.

try ifadesi: Hata oluşturabilecek kod blokları yerleştirilir.

catch ifadesi: Hata oluştuğunda hatayı yakalamak için kullanılır.

throw ifadesi: Özel hata oluşturmak için kullanılır.

finally ifadesi: try catch bloklarından sonra ne olursa olsun kodu çalıştırmak için kullanılır.

Örnek: Hiç tanımlanmamış test adında bir fonksiyonu kullanmayı deneyelim.

test(); //Uncaught ReferenceError: test is not defined

Uncaught ReferenceError: test is not defined hatası ile karşılaşacağız.

Fonksiyonu try catch bloklarının arasında yazarak fonksiyon tanımlanmadıysa kullanıcıya doğru uyarı vermesini ve programın kaldığı yerde devam etmesini sağlayalım.


try{
test();
}
catch(hata)
{
alert(hata);
}

try arasında test() fonksiyonunu çalıştırmayı denedi. Fonksiyon tanımlı olmadığı için bir hata fırlattı oluşana hatayı catch ifadesi ile hata isminde bir değişkende tutup ekrana hatayı alert ile bilgi olarak verdi.

Örnek 2: try catch finally kavramı ile ilgili bir örneğe bakalım. Sayfada olmayan bir etiketin idsi ile etiketi alamaya çalıştığımızı ve bu etikete sonrasında da değer atamak istediğimizi düşünelim. Değer atama işlemi sonuçlansa da sonuçlanmasa da işlemin sonunda işlem tamamlandı uyarısını vermesini istediğimizi varsayalım. Bu açıklama için yazmanız gereken kod aşağıdaki gibi oluşacaktır.


try{
var nesne =document.getElementById("ad");
nesne.value="Sami";
}
catch(e)
{
alert("Ad nesnesi yok! " + e.message);
}
finally{
alert("işlem tamamlandı!");
}

Örnek 3: throw ile özel hata oluşturma kavramını inceleyelim. TC kimlik numarasını bir form elementi ile kullanıcıdan almayı istiyoruz.

Eğer kullanıcı 11 haneden fazla girerse fazla giriş yaptınız uyarısı verip form nesnesine odaklanacak

Eğer kullanıcı 11 handen az girerse az karakter girişi yaptınız uyarısı verip formun içine odaklanacak

Eğer kullanıcı sayısal karakterler dışında bir değer girerse hatalı karakter girişi yaptınız uyarısı verip forma odaklanacak

Yukarıdaki tanımlamalar için throw ifadesi ile aşağıdaki gibi bir script yazıyoruz.


var nesne =document.getElementById("tc");
var uyari =document.getElementById("uyari");
nesne.onkeypress=function(){
uyari.textContent="";
}
nesne.onblur=function(){
try{
if(isNaN(nesne.value)) throw "Hatalı karakter girdiniz.";
if(nesne.value.length<11) throw "11 karakterden az girdiniz.";
if(nesne.value.length>11) throw "11 karakterden fazla girdiniz.";
}
catch(e)
{
uyari.textContent=e;
nesne.focus();
}
}