Aplicação de tipos de exceção em JavaScript

Suponha que temos uma função que aceita como parâmetro um JSON com um array de dados e grava cada elemento desse array no armazenamento local:

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

Nesta função, uma situação excepcional pode ocorrer em dois lugares: ao analisar o JSON e ao tentar salvar os dados no armazenamento local.

Suponha, por exemplo, que para o tratamento de erros decidimos exibir uma mensagem sobre os problemas:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  alert('alguns problemas');
}

Nossa mensagem é boa, claro, mas ela não diferencia os problemas que surgiram. Seria mais lógico exibir uma mensagem sobre qual problema específico ocorreu.

Para isso, vamos distinguir os erros que ocorrem pelo nome:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('espaço de armazenamento esgotado');
  }
  
  if (error.name == 'SyntaxError') {
    alert('JSON inválido');
  }
}
Задание 1

Copie o código da minha função saveData, e então, sem olhar o meu código, implemente o tratamento de erros que descrevi.

Задание 2

Propositalmente, crie sequencialmente situações excepcionais que podem ocorrer na função saveData.