Išimčių tipų panaudojimas JavaScript

Tarkime, turime funkciją, kuri parametru priima JSON su duomenų masyvu ir įrašo kiekvieną šio masyvo elementą į vietinę saugyklą:

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

Šioje funkcijoje išimtinė situacija gali atsirasti dviejose vietose: analizuojant JSON ir bandant išsaugoti duomenis į vietinę saugyklą.

Tarkime, pavyzdžiui, kaip klaidų apdorojimą nusprendėme rodyti tam tikrą pranešimą apie problemą:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  alert('kažkokios problemos');
}

Mūsų pranešimas, žinoma, yra gerai, bet jis jokiu būdu neišskiria kilusių problemų. Logiškiau būtų rodyti pranešimą apie tai, kokia konkrečiai problema atsirado.

Norėdami tai pasiekti, atskirkime kilusias klaidas pagal pavadinimą:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('pasibaigė vieta saugykloje');
  }
  
  if (error.name == 'SyntaxError') {
    alert('neteisingas JSON');
  }
}
Задание 1

Nukopijuokite mano funkcijos saveData kodą, o tada nepažiūrėdami į mano kodą įgyvendinkite mano aprašytą klaidų apdorojimą.

Задание 2

Sąmoningai paeiliui sukurkite išimlines situacijas, kurios gali atsirasti funkcijoje saveData.