Mfano wa Kutupa Isipokuwa na JSON katika JavaScript
Hebu tuchukulie kwamba kutoka mahali pengine katika ulimwengu wa nje kunakuja JSON na bidhaa:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
Tayari unajua kuwa njia JSON.parse
itatupa isipokuwa, ikiwa JSON sio sahihi.
Wacha tuikamate isipokuwa hii:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// tutafanya jambo fulani kuhusu isipokuwa
}
Hata hivyo, inawezekana kuwa JSON yenyewe ni sahihi, lakini haina sehemu tunazohitaji, kwa mfano, hakuna sehemu ya bei:
let json = '{"product": "apple", "amount": 5}'; // hakuna bei
Wacha tuseme kuwa hii pia ni hali ya isipokuwa na tutaweza katika kesi kama hii kutupa isipokuwa yetu wenyewe ya mtumiaji:
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: 'bei au kiasi cha bidhaa hakipo'
};
}
} catch (error) {
// tutafanya jambo fulani kuhusu isipokuwa
}
Sasa kipande catch kitapata aina mbili
za isipokuwa: ama JSON kwa ujumla haikubaliki,
na kisha kutakuwa na isipokuwa ya aina SyntaxError,
au JSON ni sahihi, lakini haina sehemu
tunazohitaji, na kisha kutakuwa na isipokuwa ya aina
ProductCostError.
Wacha katika kipande catch tuwatee hizi
aina za isipokuwa:
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: 'bei au kiasi cha bidhaa hakipo'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('JSON ya bidhaa sio sahihi');
} else if (error.name == 'ProductCostError') {
alert('Bidhaa haina bei au kiasi');
}
}
Hebu tuchukulie kwamba kwawe kunakuja JSON ya aina hii:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
Kagua JSON hii kwa usahihi wa jumla wakati wa kuchambua, na baada ya kuchambua hakikisha kuwa matokeo yake ni safu (array), na si kitu kingine. Ikiwa matokeo yake sio safu - tupa isipokuwa.