Skip to content

JavaScript Xatolar bilan ishlash (Error Statements)

try bayonoti

JavaScript-da try bayonoti kod bajarilishi jarayonida yuzaga kelishi mumkin bo'lgan xatolarni (shuningdek istisnolar deb ataladi) butun dasturni to'xtatmasdan boshqarish uchun ishlatiladi.

try bayonoti catch bilan birga ishlaydi. Ba'zan finally bilan, ba'zan esa throw bilan ishlaydi.


Try bloki

try bloki xato tashlashi mumkin bo'lgan kodni o'z ichiga oladi. Agar xato bo'lmasa, catch bloki o'tkazib yuboriladi.

js
try {
  // Xatoga sabab bo'lishi mumkin bo'lgan kod
} catch (error) {
  // Xatoni boshqarish uchun kod
}

Catch bloki

catch bloki faqat try blokida xato yuzaga kelganda bajariladi. Error obyekti nima noto'g'ri bo'lganligi haqida tafsilotlarni beradi.

js
try {
  // Xatoga sabab bo'lishi mumkin bo'lgan kod
} catch (error) {
  // Xatoni boshqarish uchun kod
}

Finally bloki (ixtiyoriy)

finally bloki try va catch bloklaridan keyin, xato bo'lgan yoki bo'lmaganidan qat'i nazar bajariladi. U odatda tozalash vazifalari uchun ishlatiladi (masalan, fayllarni yopish, yuklagichlarni to'xtatish va h.k.):

js
try {
  // Xatoga sabab bo'lishi mumkin bo'lgan kod
} catch (error) {
  // Xatoni boshqarish uchun kod
} finally {
  // Har doim bajariladigan kod
}

JavaScript xatolarni tashlaydi

Xato yuzaga kelganda JavaScript odatda to'xtaydi va xato xabarini yaratadi. Buning texnik atamasi: JavaScript istisno tashlaydi (throw an error).

Eslatma

JavaScript aslida ikki xususiyatga ega Error obyektini yaratadi: name va message.


throw bayonoti

throw bayonoti maxsus xato yaratishga imkon beradi. Texnik jihatdan siz istisno tashlashingiz mumkin.

Istisno JavaScript String, Number, Boolean yoki Object bo'lishi mumkin:

js
throw "Juda katta";     // matn tashlash
throw 500;               // raqam tashlash

Agar throw ni try va catch bilan birga ishlatsangiz, dastur oqimini boshqarishingiz va maxsus xato xabarlarini yaratishingiz mumkin.


Kiritishni tekshirish misoli

Bu misol kiritishni tekshiradi. Agar qiymat noto'g'ri bo'lsa, istisno (err) tashlanadi. Istisno (err) catch bayonoti tomonidan ushlanadi va maxsus xato xabari ko'rsatiladi:

html
<!DOCTYPE html>
<html>
<body>

<p>Iltimos, 5 dan 10 gacha raqam kiriting:</p>

<input id="demo" type="text">
<button type="button" onclick="myFunction()">Kiritishni tekshirish</button>
<p id="p01"></p>

<script>
function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x.trim() == "") throw "bo'sh";
    if(isNaN(x)) throw "raqam emas";
    x = Number(x);
    if(x < 5) throw "juda kichik";
    if(x > 10) throw "juda katta";
  } catch(err) {
    message.innerHTML = "Kiritish " + err;
  }
}
</script>

</body>
</html>

HTML tekshirishi

Zamonaviy brauzerlar ko'pincha JavaScript va o'rnatilgan HTML tekshirishining kombinatsiyasini ishlatadi:

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

Finally misoli

finally bayonoti try va catch dan keyin, natijadan qat'i nazar kodni bajarishga imkon beradi:

js
function myFunction() {
  const message = document.getElementById("p01");
  message.innerHTML = "";
  let x = document.getElementById("demo").value;
  try {
    if(x.trim() == "") throw "bo'sh";
    if(isNaN(x)) throw "raqam emas";
    x = Number(x);
    if(x > 10) throw "juda katta";
    if(x < 5) throw "juda kichik";
  } catch(err) {
    message.innerHTML = "Xato: " + err + ".";
  } finally {
    document.getElementById("demo").value = "";
  }
}