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-ը ընդհանուր ճիշտ լինելու համար վերլուծելիս, իսկ վերլուծությունից հետո ստուգեք, որ արդյունքում ստացվում է զանգված, այլ ոչ թե այլ ինչ-որ բան: Եթե արդյունքում ստացվում է ոչ թե զանգված - նետեք բացառություն: