⊗jsSpExcDAE 148 of 294 menu

Primer izuzetka sa data- atributima u JavaScript-u

Neka pri učitavanju stranice server kreira HTML kod, u kome se čuva naziv, cena i količina kupljenog proizvoda:

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

Hajde da napravimo funkciju, koja će primati vezu na element sa proizvodom i naći ukupnu cenu proizvoda (cena pomnožena sa količinom):

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

Nađimo cenu našeg proizvoda:

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

Pretpostavimo sada sledeću situaciju: zbog nekog kvara na serveru, on nam je poslao proizvod, u kome nedostaje cena ili količina (ili oba odjednom), na primer, ovako:

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

Ako sada pokušamo da izračunamo cenu proizvoda, rezultat na ekranu će biti NaN. Slažete se, nije baš informativno.

Ispada da treba nekako da se zaštitimo od toga da će nedostajati atributi koji su nam potrebni. To se može uraditi na dva načina. Prvi način je reći da je to normalno ponašanje i jednostavno proveriti if-ovima prisustvo potrebnih atributa:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { return 0; // vratimo nešto, na primer, 0 ili null ili false } }

Drugi variant je reći da odsustvo atributa data-price ili data-amount - izuzetna situacija. U tom slučaju ćemo bacati izuzetak:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { throw { name: 'ProductCostError', message: 'nedostaje cena ili količina proizvoda' }; } }

Koji od dva varijanta ovde je prikladnije primeniti - to je izbor programera. On može smatrati problem normalnim radom skripte ili izuzetnom situacijom.

Neka smo odlučili da je situacija izuzetna. Tada će kod za dobijanje cene proizvoda izgledati ovako:

let product = document.querySelector('#product'); try { let cost = getCost(product); alert(cost); } catch (error) { // nekako reagujemo na izuzetak }

Prepravite moj kod tako da funkcija getCost baca dva tipa izuzetaka: ako nedostaje cena i ako nedostaje količina. Dobro razmislite o nazivima ovih izuzetaka. U bloku catch prikažite različite poruke o grešci za različite tipove izuzetaka.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij