JavaScriptУрок 14 из 16

JSON и обработка ошибок

JSON — текстовый формат, в котором программы хранят и передают данные. А try...catch не даёт одной сломанной записи уронить всю программу.

Главное

  • JSON.stringify(obj) превращает объект в строку, JSON.parse(text) — обратно
  • В JSON ключи и строки только в двойных кавычках, функций и undefined там нет
  • try { … } catch (error) { … } finally { … } — catch ловит ошибку, finally выполняется всегда
  • throw new Error("…") бросает свою ошибку; у неё есть name и message
  • Текст SyntaxError в разных браузерах свой, поэтому надёжнее проверять error.name

Пример

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 собрал новую копию, поэтому copy === user даёт false. {oops} — не JSON: parse бросил SyntaxError, catch его поймал, а finally сработал в любом случае.

Задание

Как пользоваться редактором⌘ Enter или Ctrl Enter — запустить код, ⇧ ⌘ Enter — проверить задание.Tab и Shift Tab сдвигают строку или выделение; Esc, затем Tab — выйти из редактора.Проверка сравнивает то, что напечатала программа, с заданием; пробелы в конце строк не важны.После двух неудачных проверок можно открыть решение. Ваш код сохраняется в этом браузере.

В сохранениях игры одна запись сломана, а в другой нет очков. Допишите readPlayer(text): разберите JSON внутри try, при отсутствии score бросьте new Error("Missing score"), а в catch выведите Skipped: broken JSON для SyntaxError или Skipped: и текст ошибки для остальных и верните null. Вывод: Skipped: broken JSON, Skipped: Missing score, Loaded: 2 и JSON с двумя игроками.

Вывод

Здесь появится то, что напечатает программа.