Erandite tüüpide rakendamine JavaScriptis

Oletame, et meil on funktsioon, mis võtab parameetrina JSON-i andmemassiiviga ja kirjutab iga selle massiivi elemendi kohalikku salvestusseadnesse:

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

Selles funktsioonis võib erandolukord tekkida kahes kohas: JSON-i sõelumisel ja andmete salvestamise katsel kohalikku salvestusseadnesse.

Oletame, et näiteks veatöötlusena otsustasime kuvada teatud teate probleemide kohta:

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

Meie teade on muidugi tore, kuid see ei erista tekkinud probleeme. Loogilisem oleks kuvada teade konkreetse probleemi kohta.

Selleks eristame tekkinud vigu nime järgi:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('salvestusruum on otsas');
  }
  
  if (error.name == 'SyntaxError') {
    alert('vigane JSON');
  }
}
Задание 1

Kopeerige minu funktsiooni saveData kood, ja seejärel ilma minu koodi peale vahtimata rakendage kirjeldatud veatöötlus.

Задание 2

Looge spetsiaalselt järjekorras erandolukordi, mis võivad funktsioonis saveData tekkida.