Exceptions gooien in JavaScript
In eerdere lessen hebben we twee plaatsen bestudeerd waar JavaScript een uitzondering gooit bij problemen.
In jouw project kunnen er echter andere situaties zijn die voor jou uitzonderlijk zijn, maar voor JavaScript niet. In dat geval kun je je eigen, aangepaste uitzonderingen maken en gooien.
Laten we de syntax bekijken die hiervoor
nodig is. Om te beginnen moet de uitzondering
gemaakt worden met het commando new Error, waarbij
je de tekst van de uitzondering als parameter doorgeeft:
new Error('tekst van de uitzondering');
Vervolgens moet deze uitzondering gegooid worden met
het commando throw:
throw new Error('tekst van de uitzondering');
Het gooien van een uitzondering zorgt ervoor dat JavaScript
ervaart dat er een uitzonderlijke situatie is opgetreden.
Dit betekent dat zo'n uitzondering opgevangen kan worden
met de constructie try-catch en
op de gewenste manier verwerkt kan worden.
Laten we met een voorbeeld bekijken hoe we dit kunnen gebruiken. Stel we hebben een functie die het ene getal door het andere deelt:
function div(a, b) {
return a / b;
}
Laten we ervan uitgaan dat delen door nul
verboden is en dat bij een poging daartoe een
uitzonderlijke situatie moet ontstaan. Hiervoor
controleren we in de functie of er geen poging is
om door 0 te delen. Zo niet - dan delen we,
zo ja - dan gooien we een uitzondering:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('delen door nul fout');
}
}
Laten we om te beginnen gewoon proberen te delen
door 0, zonder de uitzondering op te vangen:
alert( div(3, 0) );
In dit geval wordt de uitvoering van het script afgebroken
en verschijnt er een foutmelding in de console met de tekst 'delen
door nul fout' (controleer dit). Laten we
nu onze fout opvangen en
op een bepaalde manier verwerken:
try {
alert( div(3, 0) );
} catch (error) {
alert('je probeert te delen door 0, wat verboden is');
}
In JavaScript leidt een poging om de wortel uit een negatief getal te trekken niet tot het gooien van een uitzondering:
let result = Math.sqrt(-1);
console.log(result); // geeft NaN weer
Schrijf je eigen functie die de wortel uit een getal trekt en daarbij een uitzondering gooit, als de wortel uit een negatief getal getrokken wordt.