Primer izuzetka sa JSON u JavaScript

Neka nam odnekud iz spoljnog sveta stigne JSON sa proizvodom:

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

Već znate da će metoda JSON.parse baciti izuzetak ako JSON nije korektan. Uhvatimo taj izuzetak:

javascripttry {
  let json = '{"product": "apple", "price": 1000, "amount": 5}';
  let product = JSON.parse(json);
  alert(product.price * product.amount);
} catch (error) {
  // nekako reagujemo na izuzetak
}

Međutim, može se desiti da je sam po sebi JSON korektan, ali ne sadrži polja koja su nam potrebna, na primer, nema polja sa cenom:

javascriptlet json = '{"product": "apple", "amount": 5}'; // nema cene

Recimo da je ovo takođe izuzetna situacija i u takvom slučaju ćemo bacati sopstveni korisnički izuzetak:

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: 'nedostaje cena ili količina proizvoda'
    };
  }
} catch (error) {
  // nekako reagujemo na izuzetak
}

Sada će blok catch primati dva tipa izuzetaka: ili je JSON uopšte nekorektan, i tada će biti izuzetak tipa SyntaxError, ili je JSON korektan, ali ne sadrži potrebna nam polja, i tada će biti izuzetak tipa ProductCostError.

Uhvatimo ove tipove izuzetaka u bloku 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: 'nedostaje cena ili količina proizvoda'
    };
  }
} catch (error) {
  if (error.name == 'SyntaxError') {
    alert('Nekorektan JSON proizvoda');
  } else if (error.name == 'ProductCostError') {
    alert('Proizvodu nedostaje cena ili količina');
  }
}
Задание 1

Neka vam stigne JSON ovog oblika:

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

Proverite ovaj JSON na opštu korektnost pri parsiranju, a posle parsiranja proverite da li se u rezultatu dobija niz, a ne nešto drugo. Ako se u rezultatu ne dobija niz - bacite izuzetak.