JavaScript Hata - Throw ve Try to Catch
- Önceki Sayfa JS Operatör Öncelikleri
- Sonraki Sayfa JS Kapsamı
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>
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>
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 = ""; } }
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 EvalError
Lü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; }
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; }
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; }
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; }
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; }
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.
- Önceki Sayfa JS Operatör Öncelikleri
- Sonraki Sayfa JS Kapsamı