Zastosowanie typów wyjątków w JavaScript
Załóżmy, że mamy funkcję, która przyjmuje jako parametr JSON z tablicą danych i zapisuje każdy element tej tablicy w lokalnej pamięci:
function saveData(json) {
let arr = JSON.parse(json);
for (let i = 0; i < arr.length; i++) {
localStorage.setItem(i, arr[i]);
}
}
W tej funkcji sytuacja wyjątkowa może wystąpić w dwóch miejscach: podczas parsowania JSON i przy próbie zapisania danych w lokalnej pamięci.
Załóżmy, że na przykład jako obsługę błędów postanowiliśmy wyświetlić pewną informację o problemach:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
alert('jakieś problemy');
}
Nasza wiadomość to, oczywiście, dobrze, ale w ogóle nie różnicuje powstałych problemów. Bardziej logiczne byłoby wyświetlenie komunikatu o tym, jaki dokładnie problem wystąpił.
Aby to zrobić, rozróżnijmy powstałe błędy po nazwie:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('skończyło się miejsce w pamięci');
}
if (error.name == 'SyntaxError') {
alert('nieprawidłowy JSON');
}
}
Skopiuj kod mojej funkcji saveData,
a następnie nie podglądając w mój kod zaimplementuj
opisaną przeze mnie obsługę błędów.
Specjalnie po kolei stwórz sytuacje wyjątkowe,
które mogą wystąpić w funkcji
saveData.