JavaScript Hataları
Fırlat ve Dene...Yakala...Sonunda
İfade try
, çalıştırılacak (denemek için) bir kod bloğu tanımlar.
İfade catch
, herhangi bir hatayı işlemek için bir kod bloğu tanımlar.
İfade finally
, sonuçtan bağımsız olarak çalıştırılacak bir kod bloğu tanımlar.
İfade throw
, özel bir hatayı tanımlar.
Hatalar Olacak!
JavaScript kodu yürütülürken farklı hatalar oluşabilir.
Hatalar, programcı tarafından yapılan kodlama hataları, yanlış girişten kaynaklanan hatalar ve diğer öngörülemeyen şeyler olabilir.
Örnek
Bu örnekte, kasıtlı olarak bir hata oluşturmak için "alert"i "adddlert" olarak yanlış yazdık:
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
JavaScript , adddlert'i bir hata olarak yakalar ve onu işlemek için yakalama kodunu yürütür.
JavaScript dene ve yakala
İfade try
, yürütülürken hatalara karşı test edilecek bir kod bloğu tanımlamanıza izin verir.
Deyim catch
, try bloğunda bir hata meydana gelirse yürütülecek bir kod bloğu tanımlamanıza izin verir.
JavaScript ifadeleri try
ve catch
çiftler halinde gelir:
try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}
JavaScript Atar Hataları
Bir hata oluştuğunda, JavaScript normalde durur ve bir hata mesajı oluşturur.
Bunun teknik terimi şudur: JavaScript bir istisna atar (hata atar) .
JavaScript aslında iki özelliğe sahip bir Error nesnesi oluşturacaktır: name ve message .
fırlatma Açıklaması
İfade throw
, özel bir hata oluşturmanıza olanak tanır.
Teknik olarak bir istisna atabilirsiniz (bir hata atabilirsiniz) .
İstisna bir JavaScript String
, a Number
, a Boolean
veya bir olabilir Object
:
throw "Too big"; // throw a text
throw 500; // throw a number
ve
throw
ile birlikte kullanırsanız , program akışını kontrol edebilir ve özel hata mesajları oluşturabilirsiniz.try
catch
Giriş Doğrulama Örneği
Bu örnek girdiyi inceler. Değer yanlışsa, bir istisna (err) atılır.
Özel durum (err), catch ifadesi tarafından yakalanır ve özel bir hata mesajı görüntülenir:
<!DOCTYPE html>
<html>
<body>
<p>Please input a number between
5 and 10:</p>
<input id="demo" type="text">
<button type="button"
onclick="myFunction()">Test Input</button>
<p id="p01"></p>
<script>
function myFunction() {
const message =
document.getElementById("p01");
message.innerHTML = "";
let x =
document.getElementById("demo").value;
try {
if(x == "") throw "empty";
if(isNaN(x)) throw "not a number";
x = Number(x);
if(x < 5) throw
"too low";
if(x > 10) throw "too
high";
}
catch(err) {
message.innerHTML =
"Input is " + err;
}
}
</script>
</body>
</html>
HTML Doğrulama
Yukarıdaki kod sadece bir örnektir.
Modern tarayıcılar, HTML özniteliklerinde tanımlanan önceden tanımlanmış doğrulama kurallarını kullanarak genellikle JavaScript ve yerleşik HTML doğrulamasının bir kombinasyonunu kullanır:
<input id="demo" type="number" min="5" max="10" step="1">
Bu öğreticinin sonraki bir bölümünde form doğrulama hakkında daha fazla bilgi edinebilirsiniz.
Son Açıklama
İfade finally
, sonuçtan bağımsız olarak, dene ve yakala sonrasında kodu yürütmenize izin verir:
Sözdizimi
try {
Block of code to try
}
catch(err) {
Block of code to handle errors
}
finally {
Block of code to be executed regardless of the try / catch result
}
Örnek
function myFunction() {
const message =
document.getElementById("p01");
message.innerHTML = "";
let x =
document.getElementById("demo").value;
try {
if(x == "") throw "is empty";
if(isNaN(x))
throw "is not a number";
x = Number(x);
if(x >
10) throw "is too high";
if(x <
5) throw "is too low";
}
catch(err)
{
message.innerHTML = "Error: " +
err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
Hata Nesnesi
JavaScript, bir hata oluştuğunda hata bilgisi sağlayan yerleşik bir hata nesnesine sahiptir.
error nesnesi iki faydalı özellik sağlar: isim ve mesaj.
Hata Nesnesi Özellikleri
Mülk | Açıklama |
---|---|
isim | Bir hata adı ayarlar veya döndürür |
İleti | Bir hata mesajı ayarlar veya döndürür (bir dize) |
Hata Adı Değerleri
error name özelliği tarafından altı farklı değer döndürülebilir:
Hata Adı | Açıklama |
---|---|
Değerlendirme Hatası | eval() işlevinde bir hata oluştu |
AralıkHatası | "Aralık dışı" bir sayı oluştu |
Referans Hatası | Geçersiz bir referans oluştu |
Sözdizimi hatası | Bir sözdizimi hatası oluştu |
TipHata | Bir tür hatası oluştu |
URIE hatası | encodeURI() içinde bir hata oluştu |
Altı farklı değer aşağıda açıklanmıştır.
Değerlendirme Hatası
An EvalError
, eval() işlevinde bir hatayı belirtir.
JavaScript'in daha yeni sürümleri EvalError oluşturmaz. Bunun yerine SyntaxError kullanın.
Aralık Hatası
RangeError
Yasal değerler aralığının dışında bir sayı kullanırsanız A atılır.
Örneğin: Bir sayının anlamlı basamak sayısını 500 olarak ayarlayamazsınız.
Örnek
let num = 1;
try {
num.toPrecision(500); // A number cannot have 500
significant digits
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Referans Hatası
ReferenceError
Bildirilmemiş bir değişken kullanırsanız (referans) A atılır:
Örnek
let x = 5;
try {
x = y + 1; // y cannot be used (referenced)
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Sözdizimi hatası
SyntaxError
Kodu bir sözdizimi hatasıyla değerlendirmeye çalışırsanız A atılır.
Örnek
try {
eval("alert('Hello)"); //
Missing ' will produce an error
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Tip Hatası
TypeError
Beklenen tür aralığının dışında bir değer kullanırsanız A atılır:
Örnek
let num = 1;
try {
num.toUpperCase(); // You cannot convert a number
to upper case
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
URI (Tekdüzen Kaynak Tanımlayıcı) Hatası
Bir URI işlevinde geçersiz karakterler kullanırsanız A URIError
atılır:
Örnek
try {
decodeURI("%%%"); // You cannot URI decode
percent signs
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Standart Olmayan Hata Nesnesi Özellikleri
Mozilla ve Microsoft, standart olmayan bazı hata nesnesi özelliklerini tanımlar:
fileName (Mozilla)
lineNumber (Mozilla)
columnNumber (Mozilla)
yığını (Mozilla)
açıklama (Microsoft)
numarası (Microsoft)
Bu mülkleri halka açık web sitelerinde kullanmayın. Tüm tarayıcılarda çalışmazlar.
Eksiksiz Hata Referansı
Error nesnesinin tam bir referansı için Complete JavaScript Error Reference sayfamıza gidin .