Kļūdu mēšana JavaScript

Apskatīsim <catch bloku JSON produkta uzdevumā:

javascriptcatch (error) {
  if (error.name == 'SyntaxError') {
    alert('Nekorekts JSON produkts');
  } else if (error.name == 'ProductCostError') {
    alert('Produktam trūkst cena vai daudzums');
  }
}

Kā redzat, mēs noķeram divus mūsu plānotos izņēmumus un uz to kaut kā reaģējam. Bet kas notiks, ja rasties mūsu neparedzēts izņēmums ar citu tipu? Šajā gadījumā tas arī nonāks <catch blokā, bet nekāda reakcija uz to nesekos, jo izņēmums ar citu tipu vienkārši neiekritīs nevienā no mūsu if pārbaudēm.

Kad es saku, ka nebūs nekādas reakcijas, tad es domāju, ka īsti nekādas: pat nebūs kļūdas izvadīšanas konsolē. Mūsu kods vienkārši klusējot nedarbosies.

Tāpēc pastāv šāds noteikums: jūsu kodam jānoķer tikai tie izņēmumi, ar kuriem tas zina, kā tikt galā. Ja izņēmums nav zināms, tad to ir jāmet tālāk, izmantojot <throw. Šajā gadījumā augstāk to noķers kāds vairāk zinošs vai arī izņēmums tiks izvadīts kā kļūda konsolē.

Izlabosim mūsu kodu:

javascriptcatch (error) {
  if (error.name == 'SyntaxError') {
    alert('Nekorekts JSON produkts');
  } else if (error.name == 'ProductCostError') {
    alert('Produktam trūkst cena vai daudzums');
  } else {
    throw error; // mētam izņēmumu tālāk
  }
}
Задание 1

Dots šāds kods:

javascripttry {
  let arr = JSON.parse(json);

  for (let i = 0; i < arr.length; i++) {
    localStorage.setItem(i, arr[i]);
  }
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('beidzās vieta krātuvē');
  }
  
  if (error.name == 'SyntaxError') {
    alert('nekorekts JSON');
  }
}

Kas ir nepareizs ar šo kodu? Izlabojiet to uz veiksmīgāku.