⊗jsSpExcDAE 148 of 294 menu

Piemērs izņēmumam ar data- atribūtiem JavaScript

Lai lapas ielādes laikā serveris izveidotu HTML kodu, kurā glabājas nosaukums, cena un iegādātā produkta daudzums:

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

Izveidosim funkciju, kas saņems atsauci uz elementu ar produktu un atradīs preces kopējo vērtību (cenu reizinot ar daudzumu):

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

Atradīsim mūsu produkta izmaksas:

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

Tagad pieņemsim šādu situāciju: kādas kļūmes dēļ serverī tas nosūtīja mums preci, kurā trūkst cenas vai daudzuma (vai abu uzreiz), piemēram, šādi:

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

Ja tagad mēģināsit aprēķināt preces izmaksas, tad rezultātā ekrānā tiks parādīts NaN. Piekrītat, ne pārāk informatīvi.

Izrādās, mums kaut kā jāpasargājas no tā, ka trūks mums vajadzīgo atribūtu. To var izdarīt divos veidos. Pirmais veids ir teikt, ka tā ir normāla darbība un vienkārši pārbaudīt ar if klauzulām nepieciešamo atribūtu esamību:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { return 0; // atgriezīsim kaut ko, piemēram, 0 vai null vai false } }

Otrā iespēja ir teikt, ka atribūta data-price vai data-amount trūkums - ir izņēmuma situācija. Šajā gadījumā mēs izmetīsim izņēmumu:

function getCost(elem) { if (elem.dataset.price !== undefined && elem.dataset.amount !== undefined) { return elem.dataset.price * elem.dataset.amount; } else { throw { name: 'ProductCostError', message: 'trūkst cenas vai daudzuma produktam' }; } }

Kurš no diviem variantiem šeit ir piemērotāks - tas ir programmētāja izvēle. Viņš var uzskatīt problēmu par normālu skripta darbību vai izņēmuma situāciju.

Pieņemsim, ka mēs nolēmām, ka situācija ir ārkārtēja. Tad kods preces izmaksu iegūšanai izskatīsies šādi:

let product = document.querySelector('#product'); try { let cost = getCost(product); alert(cost); } catch (error) { // kā reaģēt uz izņēmumu }

Pārveidojiet manu kodu tā, lai funkcija getCost izmestu divu veidu izņēmumus: ja trūkst cenas un ja trūkst daudzuma. Labi padomājiet par šo izņēmumu nosaukumiem. Blokā catch attēlojiet dažādus kļūdu ziņojumus dažāda veida izņēmumiem.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt