⊗jsSpExcThr 145 of 294 menu

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.

swkkrudecs