⊗jsSpExcThr 145 of 294 menu

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.

uzlswitmsen