⊗jsSpExcJSE 149 of 294 menu

Primer izuzetka sa JSON u JavaScript

Neka nam odnekud iz spoljnog sveta stigne JSON sa proizvodom:

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

Već znate da će metoda JSON.parse baciti izuzetak ako JSON nije korektan. Uhvatimo taj izuzetak:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // nekako reagujemo na izuzetak }

Međutim, može se desiti da je sam po sebi JSON korektan, ali ne sadrži polja koja su nam potrebna, na primer, nema polja sa cenom:

let json = '{"product": "apple", "amount": 5}'; // nema cene

Recimo da je ovo takođe izuzetna situacija i u takvom slučaju ćemo bacati sopstveni korisnički izuzetak:

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: 'nedostaje cena ili količina proizvoda' }; } } catch (error) { // nekako reagujemo na izuzetak }

Sada će blok catch primati dva tipa izuzetaka: ili je JSON uopšte nekorektan, i tada će biti izuzetak tipa SyntaxError, ili je JSON korektan, ali ne sadrži potrebna nam polja, i tada će biti izuzetak tipa ProductCostError.

Uhvatimo ove tipove izuzetaka u bloku 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: 'nedostaje cena ili količina proizvoda' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Nekorektan JSON proizvoda'); } else if (error.name == 'ProductCostError') { alert('Proizvodu nedostaje cena ili količina'); } }

Neka vam stigne JSON ovog oblika:

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

Proverite ovaj JSON na opštu korektnost pri parsiranju, a posle parsiranja proverite da li se u rezultatu dobija niz, a ne nešto drugo. Ako se u rezultatu ne dobija niz - bacite izuzetak.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij