Shembull i Përjashtimit me JSON në JavaScript
Le të supozojmë se nga bota e jashtme na vjen një JSON me një produkt:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
Ju tashmë e dini se metoda JSON.parse do të
hedhë një përjashtim, nëse JSON-i është i pasaktë.
Le ta kapim këtë përjashtim:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// reagoj në një farë mënyre ndaj përjashtimit
}
Megjithatë, mund të ndodhë që vetë JSON-i të jetë i saktë, por të mos përmbajë fushat që na duhen, për shembull, nuk ka fushën e çmimit:
let json = '{"product": "apple", "amount": 5}'; // nuk ka çmim
Le të themi se edhe kjo është një situatë e jashtëzakonshme dhe në këtë rast do të hedhim një përjashtim tonë të personalizuar:
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: 'mungon çmimi ose sasia e produktit'
};
}
} catch (error) {
// reagoj në një farë mënyre ndaj përjashtimit
}
Tani blloku catch do të marrë dy lloje
përjashtimesh: ose JSON-i është krejtësisht i pasaktë,
dhe atëherë do të ketë një përjashtim të tipit SyntaxError,
ose JSON-i është i saktë, por nuk përmban fushat
që na duhen, dhe atëherë do të ketë një përjashtim të tipit
ProductCostError.
Le të kapim këto lloje përjashtimesh
në bllokun 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: 'mungon çmimi ose sasia e produktit'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('JSON i pasaktë i produktit');
} else if (error.name == 'ProductCostError') {
alert('Produktit i mungon çmimi ose sasia');
}
}
Le të supozojmë se ju vjen një JSON i këtij lloji:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
Verifikoni këtë JSON për saktësi të përgjithshme gjatë analizimit, dhe pas analizimit kontrolloni nëse rezultati është një varg, dhe jo diçka tjetër. Nëse rezultati nuk është një varg - hidhni një përjashtim.