⊗jsSpExcJSE 149 of 294 menu

Пример искључења са JSON-ом у JavaScript-у

Нека нам из спољашњег света дође JSON са производом:

let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount);

Већ знате да ће метод JSON.parse бацити изузетак (exception) ако је JSON неисправан. Хајде да ухватимо тај изузетак:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // некако реагујемо на изузетак }

Међутим, може се десити да сам JSON коректан, али да не садржи поља која су нам потребна, на пример, нема поља са ценом:

let json = '{"product": "apple", "amount": 5}'; // нема цене

Рецимо да је и то изузетна ситуација и да ћемо у том случају бацити сопствени (кориснички) изузетак:

try { let json = '{"product": "apple", "amount": 5}'; let product = JSON.parse(json); if (product.price !== undefined && product.amount !== undefined) { alert(product.price * product.amount); } else { throw { name: 'ProductCostError', message: 'недостаје цена или количина производа' }; } } catch (error) { // некако реагујемо на изузетак }

Сада ће блок catch примати две врсте изузетака: или је JSON уопште неисправан, и тада ће бити изузетак типа SyntaxError, или је JSON исправан, али не садржи потребна нам поља, и тада ће бити изузетак типа ProductCostError.

Хајде да у блоку catch хватамо ове типове изузетака:

try { let json = '{"product": "apple", "amount": 5}'; let product = JSON.parse(json); if (product.price !== undefined && product.amount !== undefined) { alert(product.price * product.amount); } else { throw { name: 'ProductCostError', message: 'недостаје цена или количина производа' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Неисправан JSON производа'); } else if (error.name == 'ProductCostError') { alert('Производу недостаје цена или количина'); } }

Нека вам дође JSON оваквог облика:

let json = `[ { "name": "user1", "age": 25, "salary": 1000 }, { "name": "user2", "age": 26, "salary": 2000 }, { "name": "user3", "age": 27, "salary": 3000 } ]`;

Проверите овај 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
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј