Erandite viskamine JavaScriptis
Eelmistes õppetundides uurisime kahte kohta, kus JavaScript viskab erandi mõne probleemi korral.
Teie projektis võib siiski esineda ka muid olukordi, mis on teie jaoks erandlikud, kuid mitte JavaScripti jaoks. Sellisel juhul saate luua ja visata oma, kohandatud erandeid.
Vaatame selleks vajalikku süntaksit. Kõigepealt tuleb erand luua
käsuga new Error, edastades parameetrina
erandi teksti:
new Error('erandi tekst');
Seejärel tuleb see erand visata käsuga
throw:
throw new Error('erandi tekst');
Erandi viskamine sunnib JavaScripti
pidama, et on tekkinud erandlik olukord.
See tähendab, et sellist erandit saab püüda
konstruktsiooniga try-catch ja
seejärel vastavalt vajadusele töödelda.
Vaatame näite abil, kuidas seda kasutada. Olgu meil funktsioon, mis jagab ühe arvu teisega:
function div(a, b) {
return a / b;
}
Eeldame, et nulliga jagamine on
keelatud ja selle katse korral peaks
tekkima erandlik olukord. Selleks
kontrollime funktsioonis, kas esineb
katse jagada 0-ga. Kui ei - jagame,
kuid kui jah - viskame erandi:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('nulliga jagamise viga');
}
}
Proovime kõigepealt lihtsalt jagada
0-ga, ilma erandit püüdmata:
alert( div(3, 0) );
Sel juhul skripti täitmine katkestatakse
ja konsooli ilmub viga tekstiga 'nulliga
jagamise viga' (kontrollige). Võtame
nüüd oma vea kinni ja
kuidagi sellega ümber:
try {
alert( div(3, 0) );
} catch (error) {
alert('te üritate jagada nulliga, mis on keelatud');
}
JavaScriptis negatiivsest arvust juure võtmise katse ei põhjusta erandi viskamist:
let result = Math.sqrt(-1);
console.log(result); // väljastab NaN
Kirjutage oma funktsioon, mis võtab ruutjuure arvust ja viskab sel juhul erandi, kui juurt üritatakse võtta negatiivsest arvust.