⊗jsSpExcDAE 148 of 294 menu

მონაცემთა ატრიბუტების გამონაკლისის მაგალითი 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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა