Näide erandist JSON-iga JavaScriptis
Oletame, et kuskilt välismaailmast tuleb meile JSON tootega:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
Te juba teate, et meetod JSON.parse
viskab erandi, kui JSON on vigane.
Püüame selle erandi kinni:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// reageerime erandile kuidagi
}
Siiski võib juhtuda, et JSON ise on korrektne, kuid ei sisalda vajalikke välju, näiteks puudub hinna väli:
let json = '{"product": "apple", "amount": 5}'; // hinna pole
Ütleme, et see on samuti erandlik olukord ja sellisel juhul viskame oma kasutajalikku erandit:
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: 'tootelt puudub hind voi kogus'
};
}
} catch (error) {
// reageerime erandile kuidagi
}
Nüüd saab plokk catch kaks tüüpi
erandeid: kas JSON on üldse vigane,
siis on erand tüüpi SyntaxError,
või JSON on korrektne, kuid ei sisalda vajalikke
välju, ja siis on erand tüüpi
ProductCostError.
Püüame plokis catch kinni need
erandite tüübid:
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: 'tootelt puudub hind voi kogus'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('Vigane toote JSON');
} else if (error.name == 'ProductCostError') {
alert('Tootel puudub hind voi kogus');
}
}
Oletame, et teile tuleb JSON sellisel kujul:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
Kontrollige selle JSON-i üldist korrektsust parsimisel ja pärast parsimist kontrollige, et tulemuseks saadakse massiiv, mitte midagi muud. Kui tulemuseks saadakse mitte massiiv - visake erand.