Применение типов исключений в JavaScript

Пусть у нас есть функция, параметром принимающая JSON с массивом данных и записывающая каждый элемент этого массива в локальное хранилище:

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

В данной функции исключительная ситуация может возникнуть в двух местах: при разборе JSON и при попытке сохранения данных в локальное хранилище.

Пусть, к примеру, в качестве обработки ошибок мы решили выводить некоторое сообщение о проблемах:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  alert('какие-то проблемы');
}

Наше сообщение, это, конечно, хорошо, но оно никак не дифференцирует возникшие проблемы. Более логично было бы вывести сообщение о том, какая именно проблема возникла.

Для этого отличим возникшие ошибки по имени:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('закончилось место в хранилище');
  }
  
  if (error.name == 'SyntaxError') {
    alert('некорректный JSON');
  }
}
Задание 1

Скопируйте код моей функции saveData, а затем не подсматривая в мой код реализуйте описанную мною обработку ошибок.

Задание 2

Специально по очереди создайте исключительные ситуации, которые могут возникнуть в функции saveData.