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:

javascriptnew Error('erandi tekst');

Seejärel tuleb see erand visata käsuga throw:

javascriptthrow 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptalert( 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:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('te üritate jagada nulliga, mis on keelatud');
}
Задание 1

JavaScriptis negatiivsest arvust juure võtmise katse ei põhjusta erandi viskamist:

javascriptlet 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.