⊗jsSpExcPrb 150 of 294 menu

Exception doorgooien in JavaScript

Laten we het catch blok bekijken van de taak met JSON-product:

catch (error) { if (error.name == 'SyntaxError') { alert('Ongeldige JSON van product'); } else if (error.name == 'ProductCostError') { alert('Het product heeft geen prijs of hoeveelheid'); } }

Zoals je ziet, vangen we twee door ons geplande uitzonderingen en reageren we hier op een bepaalde manier op. Maar wat gebeurt er als er een niet door ons voorziene uitzondering van een ander type optreedt? In dat geval komt het ook in het catch blok terecht, maar zal er geen reactie op volgen, omdat de uitzondering met een ander type eenvoudigweg niet in een van onze if-statements terechtkomt.

Als ik zeg dat er geen reactie zal zijn, bedoel ik dat er echt geen is: er zal niet eens een foutmelding in de console verschijnen. Onze code zal eenvoudigweg stilzwijgend niet werken.

Daarom is er de volgende regel: je code moet alleen die uitzonderingen vangen waar het mee weet om te gaan. Als de uitzondering onbekend is, moet deze worden doorgegooid verder met behulp van throw. In dat geval zal het hoger worden opgevangen door iemand die beter geïnformeerd is of de uitzondering zal als fout in de console verschijnen.

Laten we onze code corrigeren:

catch (error) { if (error.name == 'SyntaxError') { alert('Ongeldige JSON van product'); } else if (error.name == 'ProductCostError') { alert('Het product heeft geen prijs of hoeveelheid'); } else { throw error; // uitzondering verder doorgooien } }

De volgende code is gegeven:

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('geen ruimte meer in opslag'); } if (error.name == 'SyntaxError') { alert('ongeldige JSON'); } }

Wat is er mis met deze code? Verbeter het naar eene betere versie.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren