Kaste undtagelser i JavaScript
I de foregående lektioner har vi studeret to steder, hvor JavaScript kaster en undtagelse i tilfælde af problemer.
I dit projekt kan der dog være andre situationer, som for dig er undtagelsestilstande, men ikke for JavaScript. I så tilfælde kan du oprette og kaste dine egne, brugerdefinerede undtagelser.
Lad os gennemgå den syntaks, der er nødvendig for
dette. Først skal undtagelsen oprettes
ved hjælp af kommandoen new Error, ved at
sende undtagelsesteksten som parameter:
new Error('undtagelsestekst');
Derefter skal denne undtagelse kastes med hjælp af
kommandoen throw:
throw new Error('undtagelsestekst');
At kaste en undtagelse får JavaScript til
at betragte det som en undtagelsestilstand.
Det betyder, at en sådan undtagelse kan fanges
ved hjælp af konstruktionen try-catch og
behandles på den ønskede måde.
Lad os se et eksempel på, hvordan man bruger dette. Lad os sige, at vi har en funktion, der dividerer et tal med et andet:
function div(a, b) {
return a / b;
}
Lad os betragte det som forbudt at dividere med nul,
og ved forsøg herpå skal der
opstå en undtagelsestilstand. For at gøre dette
vil vi kontrollere i funktionen, om der ikke er et forsøg på
at dividere med 0. Hvis ikke - dividerer vi,
og hvis ja - kaster vi en undtagelse:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('fejl ved division med nul');
}
}
Lad os først bare prøve at dividere
med 0, uden at fange undtagelsen:
alert( div(3, 0) );
I dette tilfælde vil udførelsen af scriptet blive afbrudt
og der vil vises en fejl i konsollen med teksten 'fejl
ved division med nul' (prøv det). Lad os
nu fange vores fejl og
behandle den på en eller anden måde:
try {
alert( div(3, 0) );
} catch (error) {
alert('du forsøger at dividere med 0, hvilket er forbudt');
}
I JavaScript fører et forsøg på at tage kvadratroden af et negativt tal ikke til at der kastes en undtagelse:
let result = Math.sqrt(-1);
console.log(result); // vil udskrive NaN
Skriv din egen funktion, som vil tage kvadratroden af et tal og samtidig kaste en undtagelse, hvis kvadratroden tages af et negativt tal.