⊗jsSpExcThr 145 of 294 menu

Kutupa Isimu za Kawaida kwa JavaScript

Katika masomo yaliyopita tulichunguza sehemu mbili ambazo JavaScript hutupa isimu za kawaida ikiwa kuna matatizo fulani.

Hata hivyo, katika mradi wako kunaweza kuwa na hali nyingine ambazo ni za kipekee kwako, lakini kwa JavaScript - siyo. Katika hali kama hii unaweza kuunda na kutupa isimu zako mwenyewe, za watumiaji.

Wacha tuchambue sintaksia inayohitajika kwa hili. Kwanza, inahitajika kuunda isimu ya kawaida kwa kutumia amri new Error, ukipeana maandishi ya isimu kama kigeuzi:

new Error('maandishi ya isimu');

Kisha isimu hii inahitaji kutupwa kwa kutumia amri throw:

throw new Error('maandishi ya isimu');

Kutupa isimu ya kawaida kunamlazimisha JavaScript kukubali kuwa kuna hali ya kipekee. Hii inamaanisha kuwa isimu kama hiyo inaweza kukamatwa kwa kutumia muundo try-catch na kushughulikiwa kwa njia inayofaa.

Wacha tuangalie kwa mfano, jinsi ya kutumia hili. Tuchukulie tuna kitendakazi kinachogawanya nambari moja kwa nyingine:

function div(a, b) { return a / b; }

Wacha tukubali kuwa mgawanyiko kwa sifuri ni marufuku na jaribio la kufanya hivyo linapaswa kusababisha hali ya kipekee. Ili kufanya hivyo tutaanza kukagua katika kitendakazi, ikiwa hakuna jaribio la kugawanya kwa 0. Ikiwa hakuna - tutagawanya, na ikiwa kuna - tutatupa isimu ya kawaida:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('kosa la kugawanya kwa sifuri'); } }

Wacha kwanza tujaribu tu kugawanya kwa 0, bila kukamata isimu ya kawaida:

alert( div(3, 0) );

Katika hali hii utekelezaji wa hati-maandishi (script) utakatika na kosa litatokea kwenye konsoli lenye maandishi 'kosa la kugawanya kwa sifuri' (hakiki). Sasa tutaanza kukamata kosa letu na kulishughulikia kwa namna fulani:

try { alert( div(3, 0) ); } catch (error) { alert('unajaribu kugawanya kwa 0, jambo lililokatazwa'); }

Kwa JavaScript, jaribio la kuchukua kipeuo cha nambari hasi haleadi kwa kutupa isimu ya kawaida:

let result = Math.sqrt(-1); console.log(result); // itatoa NaN

Andika kitendakazi chako mwenyewe, kitakachochukua kipeuo cha nambari na wakati huo huo kitatupa isimu ya kawaida, ikiwa kipeuo kinachukuliwa kutoka kwa nambari hasi.

itcsderutr