⊗jsSpExcThr 145 of 294 menu

Poikkeusten heittäminen JavaScriptissä

Edellisillä oppitunneilla opimme kaksi paikkaa, joissa JavaScript heittää poikkeuksen mahdollisten ongelmien sattuessa.

Projektissasi voi kuitenkin olla muitakin tilanteita, jotka sinulle ovat poikkeuksellisia, mutta eivät JavaScriptille. Tällöin voit luoda ja heittää omia, mukautettuja poikkeuksia.

Käydään läpi tarvittava syntaksi. Aluksi poikkeus on luotava komennolla new Error, välittämällä poikkeuksen teksti parametrina:

new Error('poikkeuksen teksti');

Tämä poikkeus on sitten heitettävä käyttämällä komentoa throw:

throw new Error('poikkeuksen teksti');

Poikkeuksen heittäminen pakottaa JavaScriptin tunnistamaan, että on tapahtunut poikkeuksellinen tilanne. Tämä tarkoittaa, että tällaisen poikkeuksen voi kaapata käyttämällä try-catch -rakennetta ja käsitellä sen halutulla tavalla.

Katsotaan esimerkkiä, kuinka tätä käytetään. Oletetaan, että meillä on funktio, joka jakaa yhden luvun toisella:

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

Oletetaan, että nollalla jakaminen on kiellettyä ja yritys tehdä niin pitäisi aiheuttaa poikkeustilanne. Tarkistetaan funktiossa, yritetäänkö jakaa nollalla 0. Jos ei - jaetaan, mutta jos kyllä - heitetään poikkeus:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('virhe nollalla jaossa'); } }

Yritetään ensin jakaa nollalla 0, sieppaamatta poikkeusta:

alert( div(3, 0) );

Tässä tapauksessa skriptin suoritus keskeytyy ja konsoliin ilmestyy virhe tekstillä 'virhe nollalla jaossa' (tarkista). Siepataan nyt virhe ja käsitellään se jollakin tavalla:

try { alert( div(3, 0) ); } catch (error) { alert('yrität jakaa nollalla, mikä on kielletty'); }

JavaScriptissä yritys erottaa negatiivisen luvun neliöjuuri ei aiheuta poikkeuksen heittämistä:

let result = Math.sqrt(-1); console.log(result); // tulostaa NaN

Kirjoita oma funktiosi, joka erottaa neliöjuuren luvusta ja heittää poikkeuksen, jos neliöjuuri yritetään erottaa negatiivisesta luvusta.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää