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 გაშიფვრის ზოგად კორექტულობაზე, და გაშიფვრის შემდეგ შეამოწმეთ, რომ შედეგად მიიღება მასივი, და არა რაიმე სხვა. თუ შედეგად მიიღება არა მასივი - გაუშვით გამონაკლისი.