⊗jsSpExcJSE 149 of 294 menu

Príklad výnimky s JSON v JavaScripte

Povedzme, že k nám z externého sveta prichádza JSON s produktom:

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

Už viete, že metóda JSON.parse bude vyhadzovať výnimku, ak JSON je nekorektný. Poďme chytiť túto výnimku:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // nejako reagujeme na výnimku }

Avšak, môže nastať situácia, kedy samotný JSON je korektný, ale neobsahuje potrebné pole, napríklad, chýba pole s cenou:

let json = '{"product": "apple", "amount": 5}'; // nie je cena

Povedzme, že to je tiež výnimková situácia a v takom prípade budeme vyhadzovať vlastnú užívateľskú výnimku:

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: 'chýba cena alebo množstvo produktu' }; } } catch (error) { // nejako reagujeme na výnimku }

Teraz blok catch bude dostávať dva typy výnimiek: buď JSON je úplne nekorektný, a potom bude výnimka typu SyntaxError, alebo JSON je korektný, ale neobsahuje potrebné pole, a potom bude výnimka typu ProductCostError.

Poďme v bloku catch zachytávať tieto typy výnimiek:

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: 'chýba cena alebo množstvo produktu' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Nekorektný JSON produktu'); } else if (error.name == 'ProductCostError') { alert('Produktu chýba cena alebo množstvo'); } }

Povedzme, že k vám prichádza JSON takéhoto druhu:

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

Skontrolujte tento JSON na všeobecnú korektnosť pri parsovaní, a po parsovaní skontrolujte, že výsledkom je pole, a nie niečo iné. Ak výsledkom nie je pole - vyhoďte výnimku.

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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť