⊗jsSpExcJSE 149 of 294 menu

Exemple d'exception avec JSON en JavaScript

Supposons qu'un JSON avec un produit nous parvienne de quelque part dans le monde extérieur :

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

Vous savez déjà que la méthode JSON.parse lèvera une exception si le JSON est incorrect. Attrapons cette exception :

try { let json = '{"product": "apple", "price": 1000, "amount": 5}'; let product = JSON.parse(json); alert(product.price * product.amount); } catch (error) { // réagir d'une certaine manière à l'exception }

Cependant, il se peut que le JSON lui-même soit correct mais ne contienne pas les champs dont nous avons besoin, par exemple, il n'y a pas de champ pour le prix :

let json = '{"product": "apple", "amount": 5}'; // pas de prix

Disons que c'est aussi une situation exceptionnelle et dans ce cas, nous lèverons notre propre exception utilisateur :

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: 'le prix ou la quantité du produit est manquant' }; } } catch (error) { // réagir d'une certaine manière à l'exception }

Maintenant, le bloc catch recevra deux types d'exceptions : soit le JSON est totalement incorrect, et alors ce sera une exception de type SyntaxError, soit le JSON est correct mais ne contient pas les champs dont nous avons besoin, et alors ce sera une exception de type ProductCostError.

Attrapons ces types d'exceptions dans le bloc catch :

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: 'le prix ou la quantité du produit est manquant' }; } } catch (error) { if (error.name == 'SyntaxError') { alert('JSON du produit incorrect'); } else if (error.name == 'ProductCostError') { alert('Le produit n\'a pas de prix ou de quantité'); } }

Supposons qu'un JSON de ce type vous parvienne :

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

Vérifiez la validité générale de ce JSON lors de l'analyse, et après l'analyse, vérifiez que le résultat est un tableau, et non autre chose. Si le résultat n'est pas un tableau - levez une exception.

hyencsitbn