JavaScriptLeçon 14 sur 16

JSON et gestion des erreurs

JSON est le format texte dans lequel les programmes rangent et échangent leurs données. try...catch empêche un seul enregistrement cassé de faire tomber tout le programme.

L’essentiel

  • JSON.stringify(obj) transforme un objet en chaîne, JSON.parse(text) fait l’inverse
  • En JSON, clés et chaînes ne prennent que des guillemets doubles, sans fonctions ni undefined
  • try { … } catch (error) { … } finally { … } : catch traite l’erreur, finally s’exécute toujours
  • throw new Error("…") lance votre propre erreur, avec un name et un message
  • Le texte d’une SyntaxError varie d’un navigateur à l’autre : testez plutôt error.name

Exemple

const user = { name: "Ola", langs: ["js", "css"], active: true }; const text = JSON.stringify(user);console.log(text); const copy = JSON.parse(text);console.log(copy.langs[1], copy === user); try {  JSON.parse("{oops}");  console.log("This line never runs");} catch (error) {  console.log("Caught:", error.name);} finally {  console.log("Done");}

JSON.parse a fabriqué une copie toute neuve, donc copy === user vaut false. {oops} n’est pas du JSON : parse a lancé une SyntaxError, catch l’a attrapée et finally a tourné quand même.

Exercice

Utiliser l’éditeur⌘ Entrée ou Ctrl Entrée lance le code, ⇧ ⌘ Entrée vérifie l’exercice.Tab et Maj Tab indentent la ligne ou la sélection ; Échap puis Tab quitte l’éditeur.La vérification compare ce que le programme a affiché à l’exercice ; les espaces en fin de ligne ne comptent pas.Après deux vérifications ratées, la solution s’ouvre. Votre code reste dans ce navigateur.

Une sauvegarde de jeu est cassée et une autre n’a pas de score. Complétez readPlayer(text) : analysez le JSON dans try, lancez new Error("Missing score") si score manque, et dans catch affichez Skipped: broken JSON pour une SyntaxError, sinon Skipped: suivi du message, puis renvoyez null. Sortie : Skipped: broken JSON, Skipped: Missing score, Loaded: 2 et le JSON des deux joueurs.

Sortie

Ce que le programme affiche apparaîtra ici.