⊗jsSpExcJSE 149 of 294 menu

Esimerkki poikkeuksesta JSON:lla JavaScriptissä

Oletetaan, että meille tulee jostain ulkoisesta lähteestä JSON tuotteella:

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

Tiedät jo, että menetelmä JSON.parse heittää poikkeuksen, jos JSON on virheellinen. Siepataan tämä poikkeus:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // reagoidaan jotenkin poikkeukseen }

Kuitenkin voi olla tilanteita, että JSON itsessään on oikein, mutta se ei sisällä tarvitsemiamme kenttiä, esimerkiksi hintakenttä puuttuu:

let json = '{"product": "apple", "amount": 5}'; // hinta puuttuu

Sanotaan, että tämä on myös poikkeustilanne ja heitämme tällaisessa tapauksessa oman mukautetun poikkeuksen:

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: 'tuotteelta puuttuu hinta tai määrä' }; } } catch (error) { // reagoidaan jotenkin poikkeukseen }

Nyt catch -lohko saa kahden tyyppisiä poikkeuksia: joko JSON on yleisesti oikein, ja silloin poikkeus on tyyppiä SyntaxError, tai JSON on oikein, mutta se ei sisällä tarvittavia kenttiä, ja silloin poikkeus on tyyppiä ProductCostError.

Siepataan catch -lohkossa nämä poikkeustyypit:

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: 'tuotteelta puuttuu hinta tai määrä' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Virheellinen JSON-tuote'); } else if (error.name == 'ProductCostError') { alert('Tuotteelta puuttuu hinta tai määrä'); } }

Oletetaan, että saat JSONin seuraavanlaista muotoa:

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

Tarkista tämä JSON yleisen oikeellisuuden varalta jäsentämisen yhteydessä, ja jäsentämisen jälkeen tarkista, että tuloksena on taulukko, eikä jotain muuta. Jos tuloksena ei ole taulukko - heitä poikkeus.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää