Példa kivételkezelésre JSON-nál JavaScriptben

Tegyük fel, hogy egy külső forrásból érkezik hozzánk egy JSON egy termékkel:

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

Azt már tudod, hogy a JSON.parse metódus kivételt fog dobni, ha a JSON helytelen. Kapjuk el ezt a kivételt:

javascripttry {
  let json = '{"product": "apple", "price": 1000, "amount": 5}';
  let product = JSON.parse(json);
  alert(product.price * product.amount);
} catch (error) {
  // valahogy reagálunk a kivételre
}

Előfordulhat azonban, hogy maga a JSON helytelen, de nem tartalmazza a szükséges mezőket, például nincs ár mező:

javascriptlet json = '{"product": "apple", "amount": 5}'; // nincs ár

Tegyük fel, hogy ez is kivételes helyzet, és ilyen esetben dobjunk saját felhasználói kivételt:

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: 'hiányzik az ár vagy a mennyiség a termékből'
    };
  }
} catch (error) {
  // valahogy reagálunk a kivételre
}

Most a catch blokk két típusú kivételt fog kapni: vagy a JSON egyáltalán helytelen, és akkor SyntaxError típusú kivétel lesz, vagy a JSON helyes, de nem tartalmazza a szükséges mezőket, és akkor ProductCostError típusú kivétel lesz.

A catch blokkban kapjuk el ezeket a kivételtípusokat:

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: 'hiányzik az ár vagy a mennyiség a termékből'
    };
  }
} catch (error) {
  if (error.name == 'SyntaxError') {
    alert('Helytelen JSON formátumú a termék');
  } else if (error.name == 'ProductCostError') {
    alert('A termékből hiányzik az ár vagy a mennyiség');
  }
}
Задание 1

Tegyük fel, hogy a következő formájú JSON érkezik hozzád:

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

Ellenőrizd ennek a JSON-nak az általános helyességét az elemzés során, majd az elemzés után ellenőrizd, hogy az eredmény egy tömb, és nem valami más. Ha az eredmény nem tömb - dobj egy kivételt.