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ě:
function 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:
try {
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:
try {
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');
}
}
Zkopírujte kód mé funkce saveData,
a poté bez nahlížení do mého kódu implementujte
popsané zpracování chyb.
Záměrně postupně vytvořte výjimečné
situace, které mohou nastat ve funkci
saveData.