JavaScriptda istisno turlaridan foydalanish

Faraz qilaylik, bizda JSON formatidagi ma'lumotlar massivini parametr sifatida qabul qiladigan va ushbu massivning har bir elementini mahalliy saqlashga yozadigan funksiya mavjud:

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

Ushbu funksiyada istisno holati ikki joyda yuzaga kelishi mumkin: JSONni tahlil qilishda va ma'lumotlarni mahalliy saqlashga saqlashga urinishda.

Faraz qilaylik, masalan, xatolarni qayta ishlash sifatida biz muammolar haqida ma'lum bir xabarni chiqarishga qaror qildik:

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

Bizning xabarmiz, bu, albatta, yaxshi, lekin u yuzaga kelgan muammolarni hech qanday ajratmaydi. Yanada mantiqiy bo'lar edi, qaysi aniq muammo yuzaga kelgani haqida xabar berish.

Buning uchun yuzaga kelgan xatolarni nomi bo'yicha farqlaymiz:

javascripttry {
  saveData('{1,2,3,4,5}');
} catch (error) {
  if (error.name == 'QuotaExceededError') {
    alert('saqlashda joy qolmadi');
  }
  
  if (error.name == 'SyntaxError') {
    alert('noto‘g‘ri JSON');
  }
}
Задание 1

Mening saveData funksiyam kodini nusxalang, va keyin mening kodimga qaramay, men tasvirlagan xatolarni qayta ishlashni amalga oshiring.

Задание 2

Maxsus ravishda navbat bilan saveData funksiyasida yuzaga kelishi mumkin bo'lgan istisno holatlarini yarating.