Приложение на типовете изключения в JavaScript
Нека имаме функция, която приема като параметър JSON с масив от данни и записва всеки елемент от този масив в локално хранилище:
function saveData(json) {
let arr = JSON.parse(json);
for (let i = 0; i < arr.length; i++) {
localStorage.setItem(i, arr[i]);
}
}
В тази функция изключителна ситуация може да възникне на две места: при парсване на JSON и при опит за запис на данни в локалното хранилище.
Нека, например, като обработка на грешки решим да извеждаме някакво съобщение за проблемите:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
alert('някакви проблеми');
}
Нашето съобщение, разбира се, е добре, но то по никакъв начин не диференцира възникналите проблеми. По-логично би било да се изведе съобщение за това какъв точно проблем е възникнал.
За целта ще разграничим възникналите грешки по име:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('свърши мястото в хранилището');
}
if (error.name == 'SyntaxError') {
alert('некоректен JSON');
}
}
Копирайте кода на моята функция saveData,
а след това без да надничате в моя код реализирайте
описаната от мен обработка на грешки.
Специално последователно създайте изключителни
ситуации, които могат да възникнат във функцията
saveData.