Пример за исклучок со JSON во JavaScript
Нека до нас однекаде од надворешниот свет доаѓа JSON со производ:
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
Веќе знаете дека методот JSON.parse ќе
фрла исклучок, ако JSON е неточен.
Ајде да го фатиме овој исклучок:
try {
let json = '{"product": "apple", "price": 1000, "amount": 5}';
let product = JSON.parse(json);
alert(product.price * product.amount);
} catch (error) {
// некако реагираме на исклучокот
}
Сепак, може да биде така што самиот JSON е точен, но не ги содржи потребните полиња, на пример, нема поле со цена:
let json = '{"product": "apple", "amount": 5}'; // нема цена
Ајде да кажеме дека ова е исто така исклучителна ситуација и во таков случај ќе фрламе сопствен кориснички исклучок:
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: 'отсутствува цена или количина на производот'
};
}
} catch (error) {
// некако реагираме на исклучокот
}
Сега блокот catch ќе прима два типа
на исклучоци: или JSON е воопшто неточен,
и тогаш ќе има исклучок од тип SyntaxError,
или JSON е точен, но не ги содржи потребните
полиња, и тогаш ќе има исклучок од тип
ProductCostError.
Ајде во блокот 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: 'отсутствува цена или количина на производот'
};
}
} catch (error) {
if (error.name == 'SyntaxError') {
alert('Неточен JSON на производот');
} else if (error.name == 'ProductCostError') {
alert('На производот му недостасува цена или количина');
}
}
Нека до вас доаѓа JSON од следниот вид:
let json = `[
{
"name": "user1",
"age": 25,
"salary": 1000
},
{
"name": "user2",
"age": 26,
"salary": 2000
},
{
"name": "user3",
"age": 27,
"salary": 3000
}
]`;
Проверете го овој JSON за општа точност при парсирање, а по парсирањето проверете дали во резултат се добива низа, а не нешто друго. Ако во резултат се добива не низа - фрлете исклучок.