Пример за исклучок со JSON во JavaScript

Нека до нас однекаде од надворешниот свет доаѓа 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 за општа точност при парсирање, а по парсирањето проверете дали во резултат се добива низа, а не нешто друго. Ако во резултат се добива не низа - фрлете исклучок.