Shembull i Përjashtimit me JSON në JavaScript

Le të supozojmë se nga bota e jashtme na vjen një JSON me një produkt:

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

Ju tashmë e dini se metoda JSON.parse do të hedhë një përjashtim, nëse JSON-i është i pasaktë. Le ta kapim këtë përjashtim:

javascripttry {
  let json = '{"product": "apple", "price": 1000, "amount": 5}';
  let product = JSON.parse(json);
  alert(product.price * product.amount);
} catch (error) {
  // reagoj në një farë mënyre ndaj përjashtimit
}

Megjithatë, mund të ndodhë që vetë JSON-i të jetë i saktë, por të mos përmbajë fushat që na duhen, për shembull, nuk ka fushën e çmimit:

javascriptlet json = '{"product": "apple", "amount": 5}'; // nuk ka çmim

Le të themi se edhe kjo është një situatë e jashtëzakonshme dhe në këtë rast do të hedhim një përjashtim tonë të personalizuar:

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: 'mungon çmimi ose sasia e produktit'
    };
  }
} catch (error) {
  // reagoj në një farë mënyre ndaj përjashtimit
}

Tani blloku catch do të marrë dy lloje përjashtimesh: ose JSON-i është krejtësisht i pasaktë, dhe atëherë do të ketë një përjashtim të tipit SyntaxError, ose JSON-i është i saktë, por nuk përmban fushat që na duhen, dhe atëherë do të ketë një përjashtim të tipit ProductCostError.

Le të kapim këto lloje përjashtimesh në bllokun 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: 'mungon çmimi ose sasia e produktit'
    };
  }
} catch (error) {
  if (error.name == 'SyntaxError') {
    alert('JSON i pasaktë i produktit');
  } else if (error.name == 'ProductCostError') {
    alert('Produktit i mungon çmimi ose sasia');
  }
}
Задание 1

Le të supozojmë se ju vjen një JSON i këtij lloji:

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

Verifikoni këtë JSON për saktësi të përgjithshme gjatë analizimit, dhe pas analizimit kontrolloni nëse rezultati është një varg, dhe jo diçka tjetër. Nëse rezultati nuk është një varg - hidhni një përjashtim.