Poikkeustyyppien käyttö JavaScriptissä
Oletetaan, että meillä on funktio, joka parametrina vastaanottaa JSON:n taulukon tiedoilla ja kirjoittaa jokaisen sen taulukon alkion paikalliseen tallennustilaan:
function 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:
try {
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ä:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('tila loppui tallennustilassa');
}
if (error.name == 'SyntaxError') {
alert('virheellinen JSON');
}
}
Kopioi koodi funktiostani saveData,
ja toteuta sitten kuvailtuni virheenkäsittely
katsomatta koodiini.
Luo tarkoituksella vuorotellen poikkeustilanteita,
jotka voivat syntyä funktiossa
saveData.