⊗jsSpExcDAE 148 of 294 menu

Voorbeeld van uitsondering met data- eienskappe in JavaScript

Laat die bediener by die laai van die bladsy HTML-kode skep waarin die naam, prys en hoeveelheid van die gekoopte produk gestoor word:

<div id="product" data-product="appel" data-price="1000" data-amount="5"></div>

Kom ons maak 'n funksie wat 'n verwysing na die element met die produk sal aanvaar en die totale koste van die item sal vind (prys vermenigvuldig met hoeveelheid):

function getCost(elem) { return elem.dataset.price * elem.dataset.amount; }

Kom ons vind die koste van ons produk:

let product = document.querySelector('#product'); let cost = getCost(product); alert(cost);

Veronderstel nou die volgende situasie: as gevolg van 'n fout op die bediener het dit vir ons 'n produk gestuur waarin die prys of hoeveelheid ontbreek (of albei gelyktydig), byvoorbeeld so:

<div id="product" data-product="appel" data-price="1000"></div>

As jy nou probeer om die koste van die item te bereken, sal die resultaat NaN op die skerm vertoon. Dit is nie baie insiggewend nie.

Dit beteken dat ons op een of ander manier onsself moet beskerm teen die afwesigheid van die eienskappe wat ons benodig. Dit kan op twee maniere gedoen word. Die eerste manier is om te sê dat dit normale gedrag is en eenvoudig die teenwoordigheid van die nodige eienskappe met if-statements te kontroleer:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { return 0; // ons gee iets terug, byvoorbeeld 0 of null of false } }

Die tweede opsie is om te sê dat die afwesigheid van die eienskap data-price of data-amount 'n uitsonderlike situasie is. In hierdie geval sal ons 'n uitsondering werp:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { throw { name: 'ProductCostError', message: 'prys of hoeveelheid vir produk ontbreek' }; } }

Watter van die twee opsies hier meer toepaslik is om te gebruik - dit is die programmer se keuse. Hy kan die probleem as normale werking van die skrip beskou of as 'n uitsonderlike situasie.

Laat ons sê ons het besluit dat die situasie uitsonderlik is. Dan sal die kode om die koste van die item te verkry so lyk:

let product = document.querySelector('#product'); try { let cost = getCost(product); alert(cost); } catch (error) { // reageer op een of ander manier op die uitsondering }

Herskep my kode sodat die funksie getCost twee tipes uitsonderings werp: een as die prys ontbreek en een as die hoeveelheid ontbreek. Dink goed na oor die name van hierdie uitsonderings. In die blok catch, vertoon verschillende foutboodskappe vir uitsonderings van verschillende tipes.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp