Hi everyone! I'm the author of code.mu :)
I'd love to chat with my non-Russian audience. I'm looking for your feedback on the site and the translation quality. Let's chat:)
⊗jsSpExcThr 145 of 294 menu
◀ ▶

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

new Error('išimties tekstas');

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

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

function 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į:

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

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

try { alert( div(3, 0) ); } catch (error) { alert('bandote dalinti iš 0, kas yra draudžiama'); }

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

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

← →
↑
Lietuvių▼
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti