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.