JSON izņēmumu piemērs JavaScript
Pieņemsim, ka no ārpuses mums ierodas JSON ar produktu:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
Jūs jau zināt, ka metode JSON.parse
izmetīs izņēmumu, ja JSON ir nekorekts.
Ļaujiet mums noķert šo izņēmumu:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// kā reaģēt uz izņēmumu
}
Tomēr var gadīties, ka pats JSON ir korekts, bet nesatur mums vajadzīgos laukus, piemēram, nav cenas lauka:
let json = '{"product": "apple", "amount": 5}'; // nav cenas
Pieņemsim, ka arī šī ir izņēmuma situācija, un šādā gadījumā mēs izmetīsim savu lietotāja izņēmumu:
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: 'trūkst cena vai daudzums produktam'
};
}
} catch (error) {
// kā reaģēt uz izņēmumu
}
Tagad bloks catch saņems divus veidus
izņēmumus: vai nu JSON vispār ir nekorekts,
un tad būs SyntaxError tipa izņēmums,
vai arī JSON ir korekts, bet nesatur vajadzīgos
laukus, un tad būs ProductCostError tipa
izņēmums.
Ļaujiet mums catch blokā noķert šos
izņēmumu veidus:
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: 'trūkst cena vai daudzums produktam'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('Nekorekts JSON produkts');
} else if (error.name == 'ProductCostError') {
alert('Produktam trūkst cena vai daudzums');
}
}
Pieņemsim, ka jums ierodas šāda veida JSON:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
Pārbaudiet šo JSON vispārējai korektumam parsējot, un pēc parsēšanas pārbaudiet, vai rezultātā tiek iegūts masīvs, nevis kaut kas cits. Ja rezultātā tiek iegūts nevis masīvs - izmetiet izņēmumu.