Uitsonderinge gooi in JavaScript
In vorige lesse het ons twee plekke bestudeer waar JavaScript 'n uitsondering gooi in die geval van probleme.
In jou projek kan daar egter ander situasies wees wat vir jou uitsonderlik is, maar vir JavaScript nie. In so 'n geval kan jy jou eie, gebruiker-gedefinieerde uitsonderings skep en gooi.
Kom ons kyk na die sintaks wat nodig is vir
dit. Eerstens moet die uitsondering geskep word
met die opdrag new Error, met die teks
van die uitsondering as parameter:
new Error('teks van die uitsondering');
Dan moet hierdie uitsondering gegooi word met die
opdrag throw:
throw new Error('teks van die uitsondering');
Die gooi van 'n uitsondering laat JavaScript
dink dat 'n uitsonderlike situasie plaasgevind het.
Dit beteken dat so 'n uitsondering gevang kan word
met die konstruksie try-catch en
op die nodige manier verwerk kan word.
Kom ons kyk na 'n voorbeeld van hoe om dit te gebruik. Laat ons sê ons het 'n funksie wat een getal deur 'n ander deel:
function div(a, b) {
return a / b;
}
Kom ons aanvaar dat deling deur nul
verbode is en dat daar 'n uitsonderlike situasie
moet ontstaan wanneer ons dit probeer doen. Vir hierdie doel
sal ons in die funksie nagaan of daar nie 'n poging is om
deur 0 te deel nie. Indien nie - deel ons,
en indien wel - gooi ons 'n uitsondering:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('deling deur nul fout');
}
}
Kom ons probeer eers om deur
0 te deel, sonder om die uitsondering te vang:
alert( div(3, 0) );
In hierdie geval sal die uitvoering van die skrip onderbreek word
en in die konsole sal daar 'n fout verskyn met die teks 'deling
deur nul fout' (toets dit). Kom ons
gaan nou ons fout vang en
dit op een of ander manier hanteer:
try {
alert( div(3, 0) );
} catch (error) {
alert('jy probeer om deur 0 te deel, wat verbode is');
}
In JavaScript lei die poging om die wortel van 'n negatiewe getal te trek nie tot die gooi van 'n uitsondering nie:
let result = Math.sqrt(-1);
console.log(result); // sal NaN uitvoer
Skryf jou eie funksie wat die wortel van 'n getal sal trek en terselfdertyd 'n uitsondering sal gooi as die wortel uit 'n negatiewe getal getrek word.