Kasta undantag i JavaScript
I tidigare lektioner har vi lärt oss om två platser där JavaScript kastar ett undantag vid problem.
I ditt projekt kan det dock finnas andra situationer som är exceptionella för dig, men inte för JavaScript. I så fall kan du skapa och kasta dina egna, anpassade undantag.
Låt oss gå igenom den syntax som behövs för
detta. Först måste undantaget skapas
med kommandot new Error, och skicka
undantagstexten som en parameter:
new Error('undantagstext');
Sedan måste detta undantag kastas med
kommandot throw:
throw new Error('undantagstext');
Att kasta ett undantag får JavaScript
att anse att ett exceptionellt tillstånd har inträffat.
Det betyder att ett sådant undantag kan fångas
med konstruktionen try-catch och
behandlas på önskat sätt.
Låt oss med ett exempel se hur man använder detta. Antag att vi har en funktion som delar ett tal med ett annat:
function div(a, b) {
return a / b;
}
Låt oss anse att division med noll
är förbjuden och att ett försök att göra detta bör
resultera i ett exceptionellt tillstånd. För att göra detta
kommer vi att kontrollera i funktionen om det inte finns ett försök
att dividera med 0. Om inte - dividerar vi,
om ja - kastar vi ett undantag:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('fel vid division med noll');
}
}
Låt oss först bara försöka dividera
med 0, utan att fånga undantaget:
alert( div(3, 0) );
I det här fallet avbryts exekveringen av skriptet
och ett fel med texten 'fel vid division med noll'
visas i konsolen (testa). Låt oss
nu fånga vårt fel och
hantera det på något sätt:
try {
alert( div(3, 0) );
} catch (error) {
alert('du försöker dividera med 0, vilket är förbjudet');
}
I JavaScript leder ett försök att ta roten ur ett negativt tal inte till att ett undantag kastas:
let result = Math.sqrt(-1);
console.log(result); // skriver ut NaN
Skriv din egen funktion som tar roten ur ett tal och samtidigt kastar ett undantag om roten tas från ett negativt tal.