Applicazione dei tipi di eccezione in JavaScript

Supponiamo di avere una funzione che accetta come parametro un JSON con un array di dati e scrive ogni elemento di questo array nella memoria locale:

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

In questa funzione una situazione eccezionale può verificarsi in due punti: durante l'analisi del JSON e durante il tentativo di salvare i dati nella memoria locale.

Supponiamo, ad esempio, che per la gestione degli errori abbiamo deciso di visualizzare un messaggio riguardante i problemi:

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

Il nostro messaggio è, certo, una buona cosa, ma non differenzia affatto i problemi sorti. Sarebbe più logico visualizzare un messaggio che indichi esattamente quale problema si è verificato.

Per fare questo, distinguiamo gli errori occorsi per nome:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('spazio di archiviazione esaurito');
  }
  
  if (error.name == 'SyntaxError') {
    alert('JSON non valido');
  }
}
Задание 1

Copiate il codice della mia funzione saveData, e poi, senza guardare il mio codice, implementate la gestione degli errori che ho descritto.

Задание 2

Create appositamente, uno per volta, le situazioni eccezionali che possono verificarsi nella funzione saveData.