JSON-ის გამონაკლისის მაგალითი JavaScript-ში
დავუშვათ, რომ გარე წყაროდან ჩვენთან მოდის JSON პროდუქტით:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
თქვენ უკვე იცით, რომ მეთოდი JSON.parse
გაისვრის გამონაკლისს, თუ JSON არაკორექტულია.
მოდით, დავიჭიროთ ეს გამონაკლისი:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// როგორმე ვრეაგირებთ გამონაკლისზე
}
თუმცა, შესაძლებელია ის, რომ თავისთავად JSON კორექტულია, მაგრამ არ შეიცავს ჩვენთვის საჭირო ველებს, მაგალითად, არ არის ფასის ველი:
let json = '{"product": "apple", "amount": 5}'; // ფასი არ არის
მოდით, ვთქვათ, რომ ეს ასევე გამონაკლისური სიტუაციაა და ასეთ შემთხვევაში ჩვენ გავუშვებთ საკუთარ მომხმარებლურ გამონაკლისს:
try {
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 დავიჭიროთ ეს
გამონაკლისების ტიპები:
try {
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('პროდუქტს აკლია ფასი ან რაოდენობა');
}
}
დავუშვათ, რომ თქვენთან მოდის ასეთი ფორმატის JSON:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
შეამოწმეთ ეს JSON გაშიფვრის ზოგად კორექტულობაზე, და გაშიფვრის შემდეგ შეამოწმეთ, რომ შედეგად მიიღება მასივი, და არა რაიმე სხვა. თუ შედეგად მიიღება არა მასივი - გაუშვით გამონაკლისი.