Hedhja e Përjashtimeve në JavaScript
Në mësimet e mëparshme kemi studiuar dy vende ku JavaScript hedh një përjashtim në rast problemesh.
Në projektin tuaj, megjithatë, mund të ketë situata tjera që për ju janë përjashtuese, por për JavaScript - jo. Në këtë rast ne mund të krijojmë dhe të hedhim përjashtimet tona, të personalizuara.
Le të shqyrtojmë sintaksën e nevojshme për
këtë. Fillimisht përjashtimi duhet krijuar
duke përdorur komandën new Error, duke kaluar
tekstin e përjashtimit si parametër:
new Error('teksti i përjashtimit');
Pastaj ky përjashtim duhet hedhur duke përdorur
komandën throw:
throw new Error('teksti i përjashtimit');
Hedhja e një përjashtimi e detyron JavaScript
të konsiderojë se ka ndodhur një situatë përjashtuese.
Kjo do të thotë se një përjashtim i tillë mund të kapet
duke përdorur konstruksionin try-catch dhe
të trajtohet në mënyrën e dëshiruar.
Le të shohim një shembull se si të përdoret kjo. Le të themi se kemi një funksion që ndan një numër me një tjetër:
function div(a, b) {
return a / b;
}
Le të konsiderojmë se pjesëtimi me zero
është i ndaluar dhe në përpjekje për ta bërë këtë duhet
të lindë një situatë përjashtuese. Për këtë
do të kontrollojmë në funksion nëse ka një përpjekje
për të pjesëtuar me 0. Nëse jo - do të pjesëtojmë,
por nëse po - do të hedhim një përjashtim:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('gabim i pjesëtimit me zero');
}
}
Fillimisht le të përpiqemi thjesht të pjesëtojmë
me 0, pa kapur përjashtimin:
alert( div(3, 0) );
Në këtë rast ekzekutimi i skriptit do të ndërpritet
dhe në konsol do të shfaqet një gabim me tekstin 'gabim
i pjesëtimit me zero' (kontrollo). Tani le
të kapim gabimin tonë dhe
ta trajtojmë atë në një farë mënyre:
try {
alert( div(3, 0) );
} catch (error) {
alert('ju po përpiqeni të pjesëtoni me 0, gjë që është e ndaluar');
}
Në JavaScript, përpjekja për të nxjerrë rrënjën katrore nga një numër negativ nuk çon në hedhjen e një përjashtimi:
let result = Math.sqrt(-1);
console.log(result); // do të shfaqë NaN
Shkruani funksionin tuaj, i cili do të nxjerrë rrënjën katrore nga një numër dhe në të njëjtën kohë do të hedhë një përjashtim, nëse rrënja katrore nxirret nga një numër negativ.