JavaScript Hata - Throw ve Try to Catch

try Dizesi, kod bloğundaki hataları test etmenizi sağlar.

catch Dizesi, hataları işlemenizi sağlar.

throw ifadesi, özelleştirilmiş hatalar oluşturmanıza izin verir.

finally Çalıştırdığınız kodu, try ve catch sonrasında her ne olursa olsun çalıştırmanızı sağlar.

Hatalar her zaman olur!

JavaScript kodunu çalıştırırken çeşitli hatalar meydana gelebilir.

Hatalar, programcının kodlama hatası, hatalı girdi veya diğer beklenmedik sorunlar nedeniyle olabilir.

Örnek

Bu örnekte, adddlert Kasten bir hatayı oluşturmak için uyarı kodu yazdık:

<p id="demo"></p>
<script>
try {
    adddlert("Hoş geldiniz!");
}
catch(err) {
    document.getElementById("demo").innerHTML = err.message;
}
</script>

Kişisel olarak deneyin

JavaScript adddlert'i bir hata olarak yakalar, ardından hata işleme kodunu çalıştırır.

JavaScript try ve catch

try Dizesi, çalışırken hataları tespit etmek için bir kod bloğu tanımanızı sağlar.

catch Dizesi, try kod bloğunda hata meydana gelirse çalışacak bir kod bloğu tanımanızı sağlar.

JavaScript İfadesi try ve catch Çift çift出现:

try {
     Test için kod bloğu
}
 catch(err) {
     Hata işleme kod bloğu
} 

JavaScript hata fırlatır

Hata meydana geldiğinde, JavaScript genellikle durur ve bir hata mesajı üretir.

Teknik terimler böyle tanımlanır:JavaScript, istisnayı (hata) fırlar (hata fırlatır).

JavaScript, iki özellikle birlikte gelen bir hata oluşturur: Error nesnesi:name ve message.

throw ifadesi

throw ifadesi, özelleştirilmiş hatalar oluşturmanıza izin verir.

Teknik olarakİstisna (hata) fırlatma (hata fırlatma).

İstisna, JavaScript stringi, sayı, boolean veya nesne olabilir:

throw "Çok büyük";    // Metin fırlat
throw 500;          // Sayı fırlat

eğer throw ile try ve catch Birlikte kullanıldığında, program akışını kontrol edebilir ve özelleştirilmiş hata mesajları oluşturabilir.

Giriş Doğrulama Örneği

Bu örnek girişi kontrol eder. Değer hatalıysa, istisna (err) fırlatılır.

Bu istisna (err) catch ifadesi tarafından yakalanır ve özelleştirilmiş bir hata mesajı gösterilir:

<!DOCTYPE html>
<html>
<body>
<p>5 - 10 arasında bir sayı girin:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Girişi Test Et</button>
<p id="message"></p>
<script>
function myFunction() {
    var mesaj, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "") throw "Boş";
         if(isNaN(x)) throw "Sayı değil";
         x = Number(x);
        if(x < 5) throw "Çok küçük";
        if(x > 10) throw "Çok büyük";
    }
    catch(err) {
        mesaj.innerHTML = "Giriş: " + err;
    }
}
</script>
</body>
</html> 

Kişisel olarak deneyin

HTML doğrulama

Bu kod sadece bir örnek.

Modern tarayıcılar genellikle HTML doğrulamasını JavaScript ile birleştirir, HTML özelliklerinde tanımlanan önceden tanımlanmış doğrulama kurallarını kullanarak:

<input id="demo" type="number" min="5" max="10" step="1">

Bu eğitimde daha sonra bölümlerde form doğrulaması hakkında daha fazla bilgi öğreneceksiniz.

finally 语句

finally 语句允许您在 try ve catch sonrasında kod çalıştırma, ne olursa olsun sonuç:

try {
     // Test için kod bloğu
}
 catch(err) {
     // Hata işleme kod bloğu
} 
finally {
     // Herhangi bir sonuç ne olursa olsun yürütülecek kod bloğu
}

Örnek

function myFunction() {
    var mesaj, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "") throw "Boş";
        if(isNaN(x)) throw "Sayı değil";
         x = Number(x);
        if(x >  10) throw "Çok büyük";
        if(x <  5) throw "Çok küçük";
    }
    catch(err) {
        message.innerHTML = "Hata: " + err + ".";
    }
    finally {
        document.getElementById("demo").value = "";
    }
}

Kişisel olarak deneyin

Error nesnesi

JavaScript, hata meydana geldiğinde hata bilgisi sağlayan yerleşik error nesnesine sahiptir.

error nesnesi iki yararlı özellik sağlar:name ve message.

Error nesnesi özellikleri

Özellik Açıklama
name Hata adını ayarlayın veya döndürün
message Hata mesajını (bir dize) ayarlayın veya döndürün

Error Name Values

Error adının name özelliği altı farklı değeri döndürebilir:

Hata adı Açıklama
EvalError eval() fonksiyonunda meydana gelen hata
RangeError Sayı aralığını aşan hata meydana geldi
ReferenceError Geçersiz atıf meydana geldi
SyntaxError Dilbilgisi hatası meydana geldi
TypeError Tür hatası meydana geldi
URIError encodeURI() içindeki hata

Altı farklı değeri ayrıntılı olarak açıklayalım.

Eval hatası

EvalError eval() fonksiyonundaki hataları atmaz.

Yeni sürümlerde JavaScript herhangi bir EvalErrorLütfen SyntaxError Bunun yerine.

Aralık hatası

RangeError Geçerli değer aralığı dışındaki sayıları kullandığınızda atılır.

Örneğin: Sayının geçerli rakam sayısını 500 olarak ayarlayamazsınız.

Örnek

var num = 1;
try {
    num.toPrecision(500);   // Sayı 500 tane geçerli sayıya sahip olamaz
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Kişisel olarak deneyin

Referans hatası

Eğer tanımlanmamış bir değişkeni kullandığınızda ReferenceError Atılır:

Örnek

var x;
try {
    x = y + 1;   // y kullanılamaz (kullanılmış)
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Kişisel olarak deneyin

Dilbilgisi hatası

Eğer yanlış dilbilgisi içeren kodu hesaplırsanız SyntaxError Atılan:

Örnek

try {
    eval("alert('Hello')");   // ' işareti eksikse hata oluşur
}
catch(err) {
     document.getElementById("demo").innerHTML = err.name;
} 

Kişisel olarak deneyin

Tür hatası

Eğer kullandığınız değer beklendiği aralık dışındaysa TypeError Atılan:

Örnek

var num = 1;
try {
    num.toUpperCase();   // Sayıları büyük harfe dönüştüremezsiniz
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Kişisel olarak deneyin

URI Hatası

URI fonksiyonlarında yasadışı karakterler kullanırsanız, URIError Atılan:

Örnek

try {
    decodeURI("%%%");   // Bu yüzdelik işaretleri URI ile kodlamaya alamazsınız
 }
catch(err) {
    document.getElementById("demo").innerHTML = err.name;
} 

Kişisel olarak deneyin

Standart dışı Error nesnesi özellikleri

Mozilla ve Microsoft, standart dışı error nesnesi özelliklerini tanımlamıştır:

  • fileName (Mozilla)
  • lineNumber (Mozilla)
  • columnNumber (Mozilla)
  • stack (Mozilla)
  • description (Microsoft)
  • number (Microsoft)

Bu özellikleri kamusal web sitelerinde kullanmayın. Tüm tarayıcılar için çalışmayabilirler.