⊗jsSpExcJSE 149 of 294 menu

Exempel på undantag med JSON i JavaScript

Låt oss säga att JSON med en produkt kommer till oss från den externa världen:

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

Du vet redan att metoden JSON.parse kommer att kasta ett undantag om JSON är ogiltig. Låt oss fånga det här undantaget:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // reagera på något sätt på undantaget }

Det kan dock hända att JSON i sig är giltigt, men inte innehåller de fält vi behöver, till exempel saknas prisfältet:

let json = '{"product": "apple", "amount": 5}'; // inget pris

Låt oss säga att detta också är en exceptionell situation och i sådana fall kasta ett eget användarundantag:

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: 'pris eller antal saknas för produkten' }; } } catch (error) { // reagera på något sätt på undantaget }

Nu kommer catch-blocket att få två typer av undantag: antingen är JSON ogiltig överhuvudtaget, och då blir det ett undantag av typen SyntaxError, eller så är JSON giltigt, men innehåller inte de nödvändiga fälten, och då blir det ett undantag av typen ProductCostError.

Låt oss i catch-blocket fånga dessa typer av undantag:

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: 'pris eller antal saknas för produkten' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('Ogiltig JSON för produkt'); } else if (error.name == 'ProductCostError') { alert('Produkten saknar pris eller antal'); } }

Låt JSON av följande typ komma till dig:

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

Kontrollera denna JSON för allmän giltighet vid tolkning, och efter tolkning, kontrollera att resultatet blir en array, inte något annat. Om resultatet inte är en array - kasta ett undantag.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa