JavaScriptда исключение турларини қўллаш

Фарз қилайлик, бизнинг функциямиз маълумотлар массиви билан JSON қабул қилади ва унинг ҳар бир элементини локальный сақлашга ёзади:

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

Ушбу функцияда исключий вазият икки жойда юзага келиши мумкин: JSON ни таҳлил қилишда ва маълумотларни локальный сақлашга сақлашга уринишда.

Мисол учун, хатоларни қайта ишлаш сифатида бироз муаммо хақида хабар чиқаришга қарор қилдик деб фараз қилайлик:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  alert('бир неча муаммолар');
}

Бизнинг хабармиз, албатта, яхши, лекин у юзага келган муаммоларни ҳеч қандай фарқламойди. Аниқ қандай муаммо юзага келгани хақида хабар чиқариш маъқулроқ бўлар эди.

Бунинг учун юзага келган хатоларни номи бойича фарқлаймиз:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('сақлашда жой тамом бўлди');
  }
  
  if (error.name == 'SyntaxError') {
    alert('нотўғри JSON');
  }
}
Задание 1

Менинг saveData функциям кодин нусхалаб олинг, сўнгра менинг кодимга қарамай сиз тавсифлаган хатоларни қайта ишлашни амалга оширинг.

Задание 2

Махсус навбат билан saveData функциясида юзага келиши мумкин бўлган исключий вазиятларни яратинг.