JavaScript-da JSON bilan bog'liq istisno misoli

Faraz qilaylik, tashqi dunyodan qandaydir joydan bizga mahsulot bilan bog'liq JSON keladi:

javascriptlet json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);

Siz allaqachon bilasizki, JSON.parse metodi JSON noto'g'ri bo'lsa, istisno qo'yadi. Keling, ushbu istisnoni ushlaymiz:

javascripttry {
  let json = '{"product": "apple", "price": 1000, "amount": 5}';
  let product = JSON.parse(json);
  alert(product.price * product.amount);
} catch (error) {
  // istisnoga qandaydir tarzda javob beramiz
}

Biroq, shunday bo'lishi mumkinki, JSON o'zi to'g'ri bo'lsin, lekin bizga kerakli maydonlarni o'z ichiga olmasin, masalan, narx maydoni yo'q:

javascriptlet json = '{"product": "apple", "amount": 5}'; // narx yo'q

Keling, aytaylik, bu ham istisno vaziyat va shunday holatlarda o'zimizning foydalanuvchi istisnomizni qo'yamiz:

javascripttry {
  let json = '{"product": "apple", "amount": 5}';
  let product = JSON.parse(json);
  
  if (product.price !== undefined && product.amount !== undefined) {
    alert(product.price * product.amount);
  } else {
    throw {
      name: 'ProductCostError',
      message: 'mahsulotda narx yoki miqdor yo\'q'
    };
  }
} catch (error) {
  // istisnoga qandaydir tarzda javob beramiz
}

Endi catch bloki ikkita turdagi istisnolarni qabul qiladi: yoki JSON umuman noto'g'ri, va unda SyntaxError turidagi istisno bo'ladi, yoki JSON to'g'ri, lekin kerakli maydonlarni o'z ichiga olmaydi, va unda ProductCostError turidagi istisno bo'ladi.

Keling, catch blokida ushbu istisno turlarini ushlaymiz:

javascripttry {
  let json = '{"product": "apple", "amount": 5}';
  let product = JSON.parse(json);
  
  if (product.price !== undefined && product.amount !== undefined) {
    alert(product.price * product.amount);
  } else {
    throw {
      name: 'ProductCostError',
      message: 'mahsulotda narx yoki miqdor yo\'q'
    };
  }
} catch (error) {
  if (error.name == 'SyntaxError') {
    alert('Noto\'g\'ri JSON mahsulot');
  } else if (error.name == 'ProductCostError') {
    alert('Mahsulotda narx yoki miqdor yo\'q');
  }
}
Задание 1

Faraz qilaylik, sizga quyidagi ko'rinishdagi JSON keladi:

javascriptlet json = `[
  {
    "name": "user1",
    "age": 25,
    "salary": 1000
  },
  {
    "name": "user2",
    "age": 26,
    "salary": 2000
  },
  {
    "name": "user3",
    "age": 27,
    "salary": 3000
  }
]`;

Ushbu JSONni tahlil qilishda umumiy to'g'riligini tekshiring, va tahlildan so'ng natijada massiv olinganligini, boshqa narsa emasligini tekshiring. Agar natijada massiv bo'lmasa - istisno qo'ying.