⊗jsSpExcJSE 149 of 294 menu

Esempio di eccezione con JSON in JavaScript

Supponiamo che da un mondo esterno ci arrivi un JSON con un prodotto:

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

Sapete già che il metodo JSON.parse lancierà un'eccezione se il JSON non è corretto. Intercettiamo questa eccezione:

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // reagiamo in qualche modo all'eccezione }

Tuttavia, potrebbe accadere che il JSON di per sé sia corretto, ma non contenga i campi di cui abbiamo bisogno, ad esempio, manca il campo del prezzo:

let json = '{"product": "apple", "amount": 5}'; // nessun prezzo

Diciamo che anche questa è una situazione eccezionale e in tal caso lanceremo una nostra eccezione personalizzata:

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: 'manca il prezzo o la quantità del prodotto' }; } } catch (error) { // reagiamo in qualche modo all'eccezione }

Ora il blocco catch riceverà due tipi di eccezioni: o il JSON è del tutto non corretto, e allora ci sarà un'eccezione di tipo SyntaxError, oppure il JSON è corretto, ma non contiene i campi di cui abbiamo bisogno, e allora ci sarà un'eccezione di tipo ProductCostError.

Nel blocco catch intercettiamo questi tipi di eccezioni:

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: 'manca il prezzo o la quantità del prodotto' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('JSON prodotto non corretto'); } else if (error.name == 'ProductCostError') { alert('Al prodotto manca il prezzo o la quantità'); } }

Supponiamo che ti arrivi un JSON di questo tipo:

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

Verifica la correttezza generale di questo JSON durante l'analisi, e dopo l'analisi verifica che il risultato sia un array, e non qualcos'altro. Se il risultato non è un array - lancia un'eccezione.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta