JavaScript hataları
Hata, bir işlevin devam etmeyi reddetme yoludur. Bu sayfa size olmadan { drink: "tea" } kullanır. throw new Error("missing size") label işlevini hemen, return öncesinde durdurur. catch bu Error nesnesini alır. Sayfa satırı caught / missing size okunur.
Bu hata ayıklama sayfası değil
Önceki sayfa console.error("missing size") çağırdı ve ardından bir yedek metin döndürdü. Betik sürdü. Hiçbir şey fırlatılmadı. console.error fırlatmaz.
throw başkadır. Aynı işlevde ondan sonraki satırlar çalışmaz. Yalnızca catch devralabilir. Önceki hata ayıklama satırı fixed / tea / regular idi.
Bir Error iki dizge taşır
new Error("missing size") bir nesne oluşturur. error.name değeri Error olur. error.message geçirilen metindir, missing size. Nesneyi yazdırmak bu iki alanı yazdırmaktan daha az işe yarar.
catch Error nesnesini alır
size yoksa label fırlatır. Çağrı try içindedir, bu yüzden catch çalışır ve error.message yazar. Metin missing size olur.
function label(order) {
if (!order.size) {
throw new Error("missing size");
}
return order.drink + " / " + order.size;
}
try {
console.log(label({ drink: "tea" }));
} catch (error) {
console.log(error.message);
}
Günlük missing size olur. label hiç return satırına ulaşmadı, bu yüzden burada tea / missing size üretilmez.
Tam sipariş catch adımını atlar
size değerine regular ver. label normal döner. catch çalışmaz.
function label(order) {
if (!order.size) {
throw new Error("missing size");
}
return order.drink + " / " + order.size;
}
try {
console.log(label({ drink: "tea", size: "regular" }));
} catch (error) {
console.log(error.message);
}
Günlük tea / regular olur.
finally her iki yolda da çalışır
finally, çağrı başarılıysa try sonrasında, fırlatırsa catch sonrasında çalışır. Her iki durumda da gereken bir adım için kullan.
function label(order) {
if (!order.size) {
throw new Error("missing size");
}
return order.drink + " / " + order.size;
}
try {
label({ drink: "tea" });
} catch (error) {
console.log(error.message);
} finally {
console.log("done");
}
Günlükler önce missing size, sonra done olur. Fırlatmadan sonra finally done yazar.
Adı ve iletiyi oku
Aynı Error nesnesini yakala ve iki alanı ayrı satırlarda yaz.
try {
throw new Error("missing size");
} catch (error) {
console.log(error.name);
console.log(error.message);
}
Günlükler önce Error, sonra missing size olur. Böylece error.name Error, error.message ise missing size olur.
Denetim fırlatır, çağıran yakalar
requireSize kuralı bilir. Fırlatır ve etiket kurmaz. Neyin yazılacağına çağıran karar verir.
function requireSize(order) {
if (!order.size) {
throw new Error("missing size");
}
}
try {
requireSize({ drink: "tea" });
console.log("ok");
} catch (error) {
console.log(error.message);
}
Günlük missing size olur. console.log("ok") satırı çalışmaz, çünkü requireSize fırlatması catch bloğuna atladı.
Fincanın altındaki satır
Sayfa label işlevini boyutsuz çağırır. catch görünür satırı iletiden kurar.
<!DOCTYPE html>
<html>
<body>
<p id="line">…</p>
<script>
function label(order) {
if (!order.size) {
throw new Error("missing size");
}
return order.drink + " / " + order.size;
}
let line = "";
try {
line = label({ drink: "tea" });
} catch (error) {
line = "caught / " + error.message;
}
document.getElementById("line").textContent = line;
</script>
</body>
</html>
Satır caught / missing size okunur. Tam bir sipariş tea / regular döndürür ve catch kullanılmadan kalırdı. fixed / tea / regular hata ayıklama sayfasındaydı.
Tezgâhta
tryiçindelabel({ drink: "tea" })çağır. catch günlüğü missing size olur.label({ drink: "tea", size: "regular" })çağır. Günlük tea / regular olur ve catch çalışmaz.- Başarısız çağrının çevresine
finallyekle. İkinci günlük done olur. error.nameveerror.messageoku. Günlükler Error ve missing size olur.- Sayfa satırını oku: caught / missing size.
Tezgâhtaki kaçırmalar
throw işlevi durdurur. console.error fırlatmaz ve işlevi durdurmaz.
throwsonrasındaki satırların çalışmasını beklemekcatchunutup hatayı yakalanmamış bırakmakfinallyyalnızca başarıdan sonra çalışır sanmakerror.messagealanınıErroradı sanmak- Satırı fixed / tea / regular okumak
Bunu tut
throw new Error("missing size")labelişlevinireturnöncesinde durdururcatchError nesnesini alır veerror.messageyazar; metin missing size olur- Tam sipariş tea / regular yazar ve
catchatlanır - Fırlatmadan sonra
finallydoneyazar - Sayfa satırı caught / missing size okunur
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek