⊗jsSpExcPrb 150 of 294 menu

Пренос на исклучоци во JavaScript

Разгледајте го блокот catch од задачата со JSON на производот:

catch (error) { if (error.name == 'SyntaxError') { alert('Невалиден JSON на производот'); } else if (error.name == 'ProductCostError') { alert('На производот му недостасува цена или количина'); } }

Како што можете да видите, ги фаќаме двата планирани исклучоци и некако реагираме на тоа. Но, што ќе се случи ако се појави непредвиден исклучок од друг тип? Во тој случај тој исто така ќе влезе во блокот catch, но нема да има никаква реакција на тоа, бидејќи исклучокот со друг тип едноставно нема да влезе во ниту еден од нашите услови.

Кога велам дека нема да има никаква реакција, мислам дека буквално никаква: дури и нема да има приказ на грешка во конзолата. Нашиот код едноставно ќе не работи молчејќи.

Затоа постои следното правило: вашиот код треба да фаќа само оние исклучоци со кои знае како да се справи. Ако исклучокот не е познат, тогаш треба да се пренесе понатаму со помош на throw. Во овој случај погоре некој подобро информиран ќе го фати или исклучокот ќе се прикаже како грешка во конзолата.

Ајде да го поправиме нашиот код:

catch (error) { if (error.name == 'SyntaxError') { alert('Невалиден JSON на производот'); } else if (error.name == 'ProductCostError') { alert('На производот му недостасува цена или количина'); } else { throw error; // го пренесуваме исклучокот понатаму } }

Даден е следниот код:

try { let arr = JSON.parse(json); for (let i = 0; i < arr.length; i++) { localStorage.setItem(i, arr[i]); } } catch (error) { if (error.name == 'QuotaExceededError') { alert('нема повеќе простор во складиштето'); } if (error.name == 'SyntaxError') { alert('невалиден JSON'); } }

Што не е во ред со овој код? Поправете го со подобар пристап.

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