Použití typů výjimek v JavaScriptu

Předpokládejme, že máme funkci, která přijímá jako parametr JSON s polem dat a zapisuje každý prvek tohoto pole do lokálního úložiště:

javascriptfunction saveData(json) {
  let arr = JSON.parse(json);
  
  for (let i = 0; i < arr.length; i++) {
    localStorage.setItem(i, arr[i]);
  }
}

V této funkci může výjimečná situace nastat na dvou místech: při analýze JSON a při pokusu o uložení dat do lokálního úložiště.

Předpokládejme, že pro zpracování chyb jsme se rozhodli zobrazit nějakou zprávu o problémech:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  alert('nějaké problémy');
}

Naše zpráva je sice dobrá, ale žádným způsobem nerozlišuje vzniklé problémy. Logičtější by bylo zobrazit zprávu o tom, jaký konkrétní problém nastal.

K tomu rozlišíme vzniklé chyby podle jména:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('došlo místo v úložišti');
  }
  
  if (error.name == 'SyntaxError') {
    alert('neplatný JSON');
  }
}
Задание 1

Zkopírujte kód mé funkce saveData, a poté bez nahlížení do mého kódu implementujte popsané zpracování chyb.

Задание 2

Záměrně postupně vytvořte výjimečné situace, které mohou nastat ve funkci saveData.