⊗jsSpExcDAE 148 of 294 menu

JavaScript'te data- Öznitelikleri ile İstisna Örneği

Sayfa yüklendiğinde sunucunun, satın alınan ürünün adını, fiyatını ve miktarını sakladığı HTML kodunu oluşturduğunu varsayalım:

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

Şimdi, ürün içeren bir elementin referansını alan ve ürünün toplam maliyetini (fiyat * miktar) hesaplayan bir fonksiyon yapalım:

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

Şimdi ürünümüzün maliyetini bulalım:

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

Şimdi şu durumu varsayalım: Sunucuda yaşanan bir arıkadan dolayı, fiyat veya miktar bilgisi (veya her ikisi birden) eksik olan bir ürün gönderildi, örneğin şu şekilde:

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

Şimdi ürün maliyetini hesaplamaya çalışırsak, sonuç olarak ekrana NaN yazılacak. Kabul edin, pek bilgilendirici değil.

Demek ki, ihtiyacımız olan özniteliklerin eksik olması durumuna karşı kendimizi bir şekilde korumalıyız. Bu iki yolla yapılabilir. İlk yol, bunun normal bir davranış olduğunu söyleyip sadece ihtiyacımız olan özniteliklerin varlığını if koşulları ile kontrol etmektir:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { return 0; // bir şey döndürelim, örneğin 0, null veya false } }

İkinci seçenek ise, data-price veya data-amount özniteliğinin eksik olmasının istisnai bir durum olduğunu söylemektir. Bu durumda bir istisna fırlatacağız:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { throw { name: 'ProductCostError', message: 'üründe fiyat veya miktar bilgisi eksik' }; } }

Burada iki seçenekten hangisinin daha uygun olduğu - programcının tercihidir. Programcı, sorunu betiğin normal çalışmasının bir parçası veya istisnai bir durum olarak değerlendirebilir.

Diyelim ki durumun istisnai olduğuna karar verdik. O zaman ürün maliyetini alma kodu şu şekilde görünecektir:

let product = document.querySelector('#product'); try { let cost = getCost(product); alert(cost); } catch (error) { // istisnaya bir şekilde tepki veriyoruz }

Kodumu, getCost fonksiyonunun iki tip istisna fırlatacak şekilde değiştirin: eğer fiyat eksikse ve eğer miktar eksikse. Bu istisnaların isimleri üzerine iyice düşünün. catch bloğunda, farklı tip istisnalar için farklı hata mesajları gösterin.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet