⊗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šuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј