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