Išimčių metimas JavaScript

Ankstesnėse pamokose ištyrėme dvi vietas, kuriose JavaScript meta išimtį esant problemoms.

Tačiau jūsų projekte gali būti ir kitų situacijų, kurios jums yra išimtinės, o JavaScript - ne. Tokiu atveju mes galime kurti ir mesti savo, vartotojo išimtis.

Pažiūrėkime sintaksę, reikalingą tam. Pirmiausia išimtį reikia sukurti naudojant komandą new Error, parametru perduodant išimties tekstą:

javascriptnew Error('išimties tekstas');

Tada šią išimtį reikia mesti naudojant komandą throw:

javascriptthrow new Error('išimties tekstas');

Išimties metimas verčia JavaScript manyti, kad įvyko išimtinė situacija. Tai reiškia, kad tokią išimtį galima pagauti naudojant konstrukciją try-catch ir apdoroti reikiamu būdu.

Pažiūrėkime pavyzdyje, kaip tuo naudotis. Tarkime, turime funkciją, kuri dalina vieną skaičių iš kito:

javascriptfunction div(a, b) {
  return a / b;
}

Laikykime, kad dalyba iš nulio yra draudžiama ir bandant tai padaryti turi kilti išimtinė situacija. Tam tikrinsime funkcijoje, ar nėra bandymo dalinti iš 0. Jei ne - dalinsime, o jei taip - mėsime išimtį:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('dalybos iš nulio klaida');
  }
}

Pirmiausia tiesiog pabandykime padalinti iš 0, neperimant išimties:

javascriptalert( div(3, 0) );

Tokiu atveju scenarijaus vykdymas nutrūks ir konsolėje pasirodys klaida su tekstu 'dalybos iš nulio klaida' (patikrinkite). Dabar perimsime mūsų klaidą ir kažkaip ją apdorosime:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('bandote dalinti iš 0, kas yra draudžiama');
}
Задание 1

JavaScript bandymas ištraukti šaknį iš neigiamo skaičiaus nesukelia išimties metimo:

javascriptlet result = Math.sqrt(-1);
console.log(result); // išves NaN

Parašykite savo funkciją, kuri ištrauks šaknį iš skaičiaus ir tuo pačiu mės išimtį, jei šaknis traukiama iš neigiamo skaičiaus.