⊗jsSpExcJSE 149 of 294 menu

Primer izjeme z JSON v JavaScriptu

Recimo, da od nekod iz zunanjega sveta pride JSON s produktom:

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

Že veste, da bo metoda JSON.parse vrgla izjemo, če JSON ni pravilen. Ujamimo to izjemo:

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

Vendar se lahko zgodi, da je sam JSON pravilen, vendar ne vsebuje potrebnih polj, na primer, ni polja s ceno:

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

Recimo, da je tudi to izjemna situacija in bomo v tem primeru vrgli lastno uporabniško izjemo:

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: 'manjka cena ali količina pri produktu' }; } } catch (error) { // nekako se odzovemo na izjemo }

Sedaj bo blok catch prejel dve vrsti izjem: bodisi JSON sploh ni pravilen, in takrat bo izjema vrste SyntaxError, ali pa je JSON pravilen, vendar ne vsebuje potrebnih polj, in takrat bo izjema vrste ProductCostError.

V bloku catch bomo ujemali te vrste izjem:

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: 'manjka cena ali količina pri produktu' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Nepravilen JSON produkta'); } else if (error.name == 'ProductCostError') { alert('Produktu manjka cena ali količina'); } }

Recimo, da k vam pride JSON takšne oblike:

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

Preverite ta JSON za splošno pravilnost pri razčlenjevanju, in po razčlenjevanju preverite, da se kot rezultat dobi seznam, ne pa kaj drugega. Če kot rezultat ni seznam - vrzite izjemo.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni