Kasting av unntak i JavaScript
I tidligere leksjoner har vi studert to steder der JavaScript kaster et unntak i tilfelle av problemer.
I ditt prosjekt kan det imidlertid være andre situasjoner som for deg er unntak, men ikke for JavaScript. I så fall kan du opprette og kaste dine egne, brukerdefinerte unntak.
La oss gå gjennom syntaksen som trengs for
dette. Først må unntaket opprettes
ved hjelp av kommandoen new Error, med
unntaksteksten som parameter:
new Error('unntakstekst');
Deretter må dette unntaket kastes med
kommandoen throw:
throw new Error('unntakstekst');
Å kaste et unntak får JavaScript til
å anse at en unntakssituasjon har oppstått.
Dette betyr at et slikt unntak kan fanges
med konstruksjonen try-catch og
behandles på ønsket måte.
La oss se på et eksempel på hvordan dette brukes. Anta at vi har en funksjon som deler ett tall på et annet:
function div(a, b) {
return a / b;
}
La oss anta at divisjon med null
er forbudt, og at et unntak skal
oppstå ved forsøk på å gjøre dette. For å oppnå dette
vil vi sjekke i funksjonen om det er et forsøk
på å dele på 0. Hvis ikke - deler vi,
og hvis ja - kaster vi et unntak:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('feil ved divisjon med null');
}
}
La oss først bare prøve å dele
på 0, uten å fange unntaket:
alert( div(3, 0) );
I dette tilfellet vil skriptkjøringen avbrytes
og det vil dukke opp en feil i konsollen
med teksten 'feil ved divisjon med null' (sjekk dette).
La oss nå fange feilen vår og
behandle den på en eller annen måte:
try {
alert( div(3, 0) );
} catch (error) {
alert('du prøver å dele på 0, noe som er forbudt');
}
I JavaScript fører ikke forsøk på å trekke ut kvadratroten av et negativt tall til at det kastes et unntak:
let result = Math.sqrt(-1);
console.log(result); // vil skrive ut NaN
Skriv din egen funksjon som skal trekke ut kvadratroten av et tall og samtidig kaste et unntak hvis kvadratroten trekkes ut fra et negativt tall.