JavaScriptda Istisnolarni Otish
Oldingi darslarda biz JavaScript qanday qilib muammolar yuzaga kelganda istisno otishini o'rgandik.
Biroq, sizning loyihangizda siz uchun istisno hisoblanadigan, lekin JavaScript uchun hisoblanmaydigan boshqa holatlar bo'lishi mumkin. Bunday hollarda biz o'zimizning, foydalanuvchi tomonidan yaratilgan istisnolarni yaratishimiz va otishimiz mumkin.
Buning uchun kerak bo'ladigan sintaksisni ko'rib chiqaylik.
Boshlanish uchun, istisno matnini parametr sifatida
uzatgan holda new Error buyrug'i yordamida
istisno yaratish kerak:
new Error('istisno matni');
Keyin bu istisno throw buyrug'i yordamida
otilishi kerak:
throw new Error('istisno matni');
Istisno otish JavaScriptga istisno holati yuzaga
kelgan deb hisoblashga majbur qiladi.
Bu shuni anglatadiki, bunday istisnoni try-catch
konstruksiyasi yordamida ushlab qolish va
kerakli tarzda qayta ishlash mumkin.
Keling, buni qanday qilib ishlatishni misolda ko'ramiz. Faraz qilaylik, bizda bir sonni ikkinchisiga bo'ladigan funksiya mavjud:
function div(a, b) {
return a / b;
}
Keling, nolga bo'lish taqiqlangan deb hisoblaylik
va buni amalga oshirishga urinish istisno holatini
keltirib chiqarishi kerak. Buning uchun funksiyada
0 ga bo'lish urinishlari mavjudligini tekshiramiz.
Yo'q bo'lsa - bo'lamiz,
bo'lsa - istisno otamiz:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('nolga bo‘lish xatosi');
}
}
Keling, boshlanish uchun istisnoni ushlamasdan,
0 ga bo'lishni sinab ko'ramiz:
alert( div(3, 0) );
Bunday holatda skript bajarilishi to'xtatiladi
va konsolda 'nolga bo‘lish xatosi' matni bilan xato paydo bo'ladi
(tekshiring). Keling endi xatomizni ushlab qolamiz va
uni qandaydir qayta ishlaymiz:
try {
alert( div(3, 0) );
} catch (error) {
alert('siz taqiqlangan nolga bo‘lishga urinyapsiz');
}
JavaScriptda manfiy sondan ildiz olishga urinish istisno otishga olib kelmaydi:
let result = Math.sqrt(-1);
console.log(result); // NaN chiqaradi
O'zingizning funksiyangizni yozing, u sondan ildiz chiqaradi va shu bilan birga, agar ildiz manfiy sondan chiqarilsa, istisno otadi.