Példa kivételkezelésre JSON-nál JavaScriptben
Tegyük fel, hogy egy külső forrásból érkezik hozzánk egy JSON egy termékkel:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
Azt már tudod, hogy a JSON.parse metódus
kivételt fog dobni, ha a JSON helytelen.
Kapjuk el ezt a kivételt:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// valahogy reagálunk a kivételre
}
Előfordulhat azonban, hogy maga a JSON helytelen, de nem tartalmazza a szükséges mezőket, például nincs ár mező:
let json = '{"product": "apple", "amount": 5}'; // nincs ár
Tegyük fel, hogy ez is kivételes helyzet, és ilyen esetben dobjunk saját felhasználói kivételt:
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: 'hiányzik az ár vagy a mennyiség a termékből'
};
}
} catch (error) {
// valahogy reagálunk a kivételre
}
Most a catch blokk két típusú
kivételt fog kapni: vagy a JSON egyáltalán helytelen,
és akkor SyntaxError típusú kivétel lesz,
vagy a JSON helyes, de nem tartalmazza a szükséges
mezőket, és akkor ProductCostError típusú
kivétel lesz.
A catch blokkban kapjuk el ezeket a
kivételtípusokat:
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: 'hiányzik az ár vagy a mennyiség a termékből'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('Helytelen JSON formátumú a termék');
} else if (error.name == 'ProductCostError') {
alert('A termékből hiányzik az ár vagy a mennyiség');
}
}
Tegyük fel, hogy a következő formájú JSON érkezik hozzád:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
Ellenőrizd ennek a JSON-nak az általános helyességét az elemzés során, majd az elemzés után ellenőrizd, hogy az eredmény egy tömb, és nem valami más. Ha az eredmény nem tömb - dobj egy kivételt.