⊗jsSpExcPrb 150 of 294 menu

Erindite edasisaatmise JavaScriptis

Vaatleme JSON toote ülesande catch plokki:

catch (error) { if (error.name == 'SyntaxError') { alert('Vigane toote JSON'); } else if (error.name == 'ProductCostError') { alert('Tootel puudub hind või kogus'); } }

Nagu näete, püüame kaks plaanitud erindit ja reageerime sellele kuidagi. Aga mis juhtub, kui tekib ettenägematut tüüpi erind? Sel juhul see satub ka catch plokki, kuid mingit reaktsiooni sellele ei järgne, sest erind teist tüüpi lihtsalt ei jõua ühtegi meie if-lausesse.

Kui ma ütlen, et mingit reaktsiooni ei ole, siis ma mõtlen, et tegelikult mitte mingit: isegi ei ilmu viga konsooli. Meie kood lihtsalt töötab vaikselt edasi.

Seetõttu kehtib järgmine reegel: teie kood peaks püüdma ainult neid erindeid, millega teab, kuidas toime tulla. Kui erind on teadmata, siis tuleb seda edasi saata kasutades throw. Sel juhul püüab selle kõrgemal keegi teadlikum või erind ilmuve veana konsooli.

Parandame oma koodi:

catch (error) { if (error.name == 'SyntaxError') { alert('Vigane toote JSON'); } else if (error.name == 'ProductCostError') { alert('Tootel puudub hind või kogus'); } else { throw error; // saadame erindi edasi } }

Antud on järgmine kood:

try { let arr = JSON.parse(json); for (let i = 0; i < arr.length; i++) { localStorage.setItem(i, arr[i]); } } catch (error) { if (error.name == 'QuotaExceededError') { alert('salvestusruum on otsas'); } if (error.name == 'SyntaxError') { alert('vigane JSON'); } }

Mis selle koodiga on valesti? Parandage see õnnestunumaks.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu