JavaScriptда JSON учун мисолдаги истисно

Фарз қилайлик, бизга ташқи дунёдан қандайдир JSON маҳсулот билан келади:

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

Сиз биласизки, JSON.parse усули JSON нотўғри бўлса, истисно ушлагади. Келинг, бу истиснони ушлаймиз:

javascripttry {
  let json = '{"product": "apple", "price": 1000, "amount": 5}';
  let product = JSON.parse(json);
  alert(product.price * product.amount);
} catch (error) {
  // истиснога қандайдир реакция кўрсатамиз
}

Аммо, шундай бўлиши мумкинки, JSON ўзи тўғри, лекин биз керакли майдонларни ўз ичига олмаган, масалан, нарх майдони йўқ:

javascriptlet json = '{"product": "apple", "amount": 5}'; // нарх йўқ

Келинг, биз бу ҳам истисли вазият дейлик ва бу ҳолда ўзимизнинг фойдаланувчи истисмосини ушлаймиз:

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: 'маҳсулотда нарх ёки миқдор йўқ'
    };
  }
} catch (error) {
  // истиснога қандайдир реакция кўрсатамиз
}

Энди catch блоги икки турдаги истисноларни олади: ёки JSON умуман нотўғри, ва у ҳолда SyntaxError туридаги истисно бўлади, ёки JSON тўғри, лекин биз керакли майдонларни ўз ичига олмаган, ва у ҳолда ProductCostError туридаги истисно бўлади.

Келинг, catch блогида бу истисно турларини ушлаймиз:

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: 'маҳсулотда нарх ёки миқдор йўқ'
    };
  }
} catch (error) {
  if (error.name == 'SyntaxError') {
    alert('Нотўғри JSON маҳсулот');
  } else if (error.name == 'ProductCostError') {
    alert('Маҳсулотда нарх ёки миқдор йўқ');
  }
}
Задание 1

Фарз қилайлик, сизга куйидаги кўринишдаги JSON келади:

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

Бу JSON ни умумй корректликка текширинг тайёрлов жараёнида, ва тайёрловдан кейин текширингки, натижада массав олинадими, бошқа нарса эмас. Агар натижада массав бўлмаса - истисно ушланг.