Poikkeustyyppien käyttö JavaScriptissä

Oletetaan, että meillä on funktio, joka parametrina vastaanottaa JSON:n taulukon tiedoilla ja kirjoittaa jokaisen sen taulukon alkion paikalliseen tallennustilaan:

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

Tässä funktiossa poikkeustilanne voi syntyä kahdessa kohdassa: JSON:n jäsentämisessä ja tallennettaessa tietoja paikalliseen tallennustilaan.

Oletetaan esimerkiksi, että päätimme käsitellä virheet näyttämällä jonkinlaisen viestin ongelmista:

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

Viestimme on tietysti hyvä, mutta se ei mitenkään erottele syntyneitä ongelmia. Olisi loogisempaa näyttää viesti siitä, mikä tarkka ongelma syntyi.

Tehdään tämä erottelemalla syntyneet virheet nimellä:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('tila loppui tallennustilassa');
  }
  
  if (error.name == 'SyntaxError') {
    alert('virheellinen JSON');
  }
}
Задание 1

Kopioi koodi funktiostani saveData, ja toteuta sitten kuvailtuni virheenkäsittely katsomatta koodiini.

Задание 2

Luo tarkoituksella vuorotellen poikkeustilanteita, jotka voivat syntyä funktiossa saveData.