⊗jsSpExcDAE 148 of 294 menu

Пример изузетка са data- атрибутима у JavaScript-у

Нека при учитавању странице сервер креира HTML код, у којем се чувају назив, цена и количина купљеног производа:

<div id="product" data-product="јабука" data-price="1000" data-amount="5"></div>

Направимо функцију која ће узимати референцу на елемент са производом и израчунавати укупну вредност робе (цену помножену са количином):

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

Пронађимо вредност нашег производа:

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

Претпоставимо сада следећу ситуацију: због неког квара на серверу, он нам је послао производ у којем недостаје цена или количина (или оба одједном), на пример, овако:

<div id="product" data-product="јабука" data-price="1000"></div>

Ако сада покушамо да израчунамо вредност производа, као резултат ће се исписати NaN. Слажете се, није баш информативно.

Испада да се морамо осигурати од тога да ће недостајати потребни нам атрибути. То се може учинити на два начина. Први начин јесте рећи да је то нормално понашање и једноставно проверити if наредбама постојање потребних нам атрибута:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { return 0; // вратимо нешто, на пример, 0 или null или false } }

Друга опција јесте рећи да одсуство атрибута data-price или data-amount представља изузетну ситуацију. У том случају ћемо бацати изузетак:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { throw { name: 'ProductCostError', message: 'недостаје цена или количина производа' }; } }

Која од две опције је овде прикладнија за применити - то је избор програмера. Он може сматрати проблем нормалним радом скрипта или изузетном ситуацијом.

Нека смо одлучили да је ситуација изузетна. Тада ће код за добијање вредности производа изгледати овако:

let product = document.querySelector('#product'); try { let cost = getCost(product); alert(cost); } catch (error) { // некако реагујемо на изузетак }

Промените мој код тако да функција getCost баца два типа изузетака: ако недостаје цена и ако недостаје количина. Добро размислите о називима тих изузетака. У блоку catch прикажите различите поруке о грешки за различите типове изузетака.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј