Применение типов исключений в 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
.