⊗jsSpExcPrb 150 of 294 menu

Kļūdu mēšana JavaScript

Apskatīsim <catch bloku JSON produkta uzdevumā:

catch (error) { if (error.name == 'SyntaxError') { alert('Nekorekts JSON produkts'); } else if (error.name == 'ProductCostError') { alert('Produktam trūkst cena vai daudzums'); } }

Kā redzat, mēs noķeram divus mūsu plānotos izņēmumus un uz to kaut kā reaģējam. Bet kas notiks, ja rasties mūsu neparedzēts izņēmums ar citu tipu? Šajā gadījumā tas arī nonāks <catch blokā, bet nekāda reakcija uz to nesekos, jo izņēmums ar citu tipu vienkārši neiekritīs nevienā no mūsu if pārbaudēm.

Kad es saku, ka nebūs nekādas reakcijas, tad es domāju, ka īsti nekādas: pat nebūs kļūdas izvadīšanas konsolē. Mūsu kods vienkārši klusējot nedarbosies.

Tāpēc pastāv šāds noteikums: jūsu kodam jānoķer tikai tie izņēmumi, ar kuriem tas zina, kā tikt galā. Ja izņēmums nav zināms, tad to ir jāmet tālāk, izmantojot <throw. Šajā gadījumā augstāk to noķers kāds vairāk zinošs vai arī izņēmums tiks izvadīts kā kļūda konsolē.

Izlabosim mūsu kodu:

catch (error) { if (error.name == 'SyntaxError') { alert('Nekorekts JSON produkts'); } else if (error.name == 'ProductCostError') { alert('Produktam trūkst cena vai daudzums'); } else { throw error; // mētam izņēmumu tālāk } }

Dots šāds kods:

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('beidzās vieta krātuvē'); } if (error.name == 'SyntaxError') { alert('nekorekts JSON'); } }

Kas ir nepareizs ar šo kodu? Izlabojiet to uz veiksmīgāku.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt